HouseRobber   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 50
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 10
eloc 29
c 2
b 0
f 0
dl 0
loc 50
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A rob() 0 16 4
A rob3() 0 14 3
A rob2() 0 14 3
1
<?php
2
3
declare(strict_types=1);
4
5
namespace leetcode;
6
7
class HouseRobber
8
{
9
    public static function rob(array $nums): int
10
    {
11
        $n = count($nums);
12
        if ($n <= 0) {
13
            return 0;
14
        }
15
        $dp = array_fill(0, $n + 1, 0);
16
        foreach ($nums as $i => $num) {
17
            if ($i - 1 < 0) {
18
                [$dp[0], $dp[1]] = [0, $num];
19
            } else {
20
                $dp[$i + 1] = max($dp[$i], $dp[$i - 1] + $num);
21
            }
22
        }
23
24
        return $dp[$n];
25
    }
26
27
    public static function rob2(array $nums): int
28
    {
29
        $n = count($nums);
30
        if ($n <= 0) {
31
            return 0;
32
        }
33
        [$prev, $curr] = [0, 0];
34
        foreach ($nums as $num) {
35
            $temp = $curr;
36
            $curr = max($curr, $prev + $num);
37
            $prev = $temp;
38
        }
39
40
        return $curr;
41
    }
42
43
    public static function rob3(array $nums): int
44
    {
45
        $n = count($nums);
46
        if ($n <= 0) {
47
            return 0;
48
        }
49
        $dp = array_fill(0, $n, 0);
50
        $dp[0] = $nums[0];
51
        $dp[1] = max($nums[0], $nums[1]);
52
        for ($i = 2; $i < $n; $i++) {
53
            $dp[$i] = max($dp[$i - 1], $dp[$i - 2] + $nums[$i]);
54
        }
55
56
        return $dp[$n - 1];
57
    }
58
}
59