File tree 1 file changed +29
-0
lines changed
1 file changed +29
-0
lines changed Original file line number Diff line number Diff line change
1
+ # https://leetcode.com/problems/house-robber/
2
+
3
+ from typing import List
4
+
5
+ class Solution :
6
+ def rob (self , nums : List [int ]) -> int :
7
+ """
8
+ [Complexity]
9
+ - TC: O(n)
10
+ - SC: O(1) (space-optimized DP)
11
+
12
+ [Approach]
13
+ μΈμ ν λ μ§μ λͺ¨λ νΈλ©΄ μ λλ―λ‘ λ€μκ³Ό κ°μ΄ dp tableμ ꡬμν μ μλ€.
14
+ dp[i] = (μμ°¨μ μΌλ‘) i-th houseλ₯Ό νΈ λ μ»μ μ μλ max amount of money
15
+ = max(μ΄μ μ§μ νΈμμ λ, μ΄μ μ§μ νΈμ§ μμμ λ)
16
+ = max(μ§κΈ μ§μ νΈ μ μμ λ, μ§κΈ μ§μ νΈ μ μμ λ)
17
+ = max(dp[i - 1], dp[i - 2] + nums[i])
18
+ μ΄λ, dp[i] κ°μ μ±μ°κΈ° μν΄ dp[i - 1]κ³Ό dp[i - 2] κ°λ§ νμνλ―λ‘,
19
+ O(n) space(= list)κ° μλ O(1) space(= variables)λ‘ optimize ν μ μλ€.
20
+ prev1 = dp[i - 1]
21
+ prev2 = dp[i - 2]
22
+ """
23
+
24
+ prev1 = prev2 = 0
25
+
26
+ for num in nums :
27
+ prev1 , prev2 = max (prev1 , prev2 + num ), prev1 # -- multiple assignment
28
+
29
+ return prev1
You canβt perform that action at this time.
0 commit comments