Skip to content

Commit 55986a0

Browse files
committed
House Robber solution
1 parent e372a24 commit 55986a0

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

house-robber/jungsiroo.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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])

0 commit comments

Comments
 (0)