File tree Expand file tree Collapse file tree 1 file changed +38
-0
lines changed Expand file tree Collapse file tree 1 file changed +38
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution :
2
+ def bfs (self , nums ):
3
+ from collections import deque
4
+ queue = deque ()
5
+
6
+ # price, idx, robbed prev
7
+ queue .append ([0 , 0 , False ])
8
+ queue .append ([0 , 0 , True ])
9
+ ret = 0
10
+
11
+ while queue :
12
+ price , idx , prev = queue .popleft ()
13
+ ret = max (ret , price )
14
+ if idx == len (nums ):
15
+ continue
16
+
17
+ if prev :
18
+ queue .append ([price , idx + 1 , False ])
19
+ else :
20
+ queue .append ([price , idx + 1 , False ])
21
+ queue .append ([price + nums [idx ], idx + 1 , True ])
22
+
23
+ return ret
24
+
25
+ def rob (self , nums : List [int ]) -> int :
26
+ # BFS - Slow and out of memory
27
+ """return self.bfs(nums)"""
28
+
29
+ # DP
30
+ n = len (nums )
31
+ record = [[0 ]* n for _ in range (2 )]
32
+ record [1 ][0 ] = nums [0 ]
33
+
34
+ for i in range (1 , n ):
35
+ record [1 ][i ] = max (record [0 ][i - 1 ]+ nums [i ], record [1 ][i ])
36
+ record [0 ][i ] = max (record [1 ][i - 1 ], record [0 ][i - 1 ])
37
+
38
+ return max (record [1 ][- 1 ], record [0 ][- 1 ])
You can’t perform that action at this time.
0 commit comments