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