forked from DaleStudy/leetcode-study
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhu6r1s.py
More file actions
31 lines (27 loc) Β· 1.3 KB
/
hu6r1s.py
File metadata and controls
31 lines (27 loc) Β· 1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Solution:
"""
λΆλΆν© νμ©
dp[0] = nums[0]
dp[1] = dp[0] + nums[1] μ nums[1] μ€ ν° κ°μ λ£λλ€.
[-2, 1]κΉμ§μ ν©κ³Ό [1]κΉμ§μ ν© μ€ ν° κ°μ λ£λλ€κ³ μκ°νλ©΄ λλ€.
dp[1] = [1]
dp[2] = dp[1] + nums[2] μ nums[2] μ€ ν° κ°μ λ£λλ€.
dp[1]μμ [-2, 1]λ₯Ό μ ννλ€λ©΄ [-2, 1, -3]κΉμ§μ ν©κ³Ό [1]μ μ ννλ€λ©΄ [1, -3]κΉμ§μ ν© μ€ ν° κ°μ μ ννκ² λλ€.
dp[2] = [1, -3]
dp[3] = dp[2] + nums[3] μ nums[3] μ€ ν° κ°μ λ£λλ€.
dp[3]μ [1, -3]μ [4]λ₯Ό μΆκ°νμ¬ [1, -3, 4]κΉμ§μ ν©κ³Ό nums[3]μΈ 4λ₯Ό λΉκ΅νμ¬ ν° κ°μΌλ‘ λ£λλ€.
κ²°κ΅ μ νμμ dp[i] = max(dp[i-1] + nums[i], nums[i])κ° λλ€.
μκ° λ³΅μ‘λ (Time Complexity):
- dp λ°°μ΄μ μ±μ°κΈ° μν΄ ν λ² μν: O(n)
- dp λ°°μ΄μμ μ΅λκ°μ μ°ΎκΈ° μν΄ ν λ² μν: O(n)
β μ΄ μκ° λ³΅μ‘λ: O(n)
κ³΅κ° λ³΅μ‘λ (Space Complexity):
- dp λ°°μ΄μ΄ μ
λ ₯ ν¬κΈ°λ§νΌ νμ: O(n)
β μ΄ κ³΅κ° λ³΅μ‘λ: O(n)
"""
def maxSubArray(self, nums: List[int]) -> int:
dp = [0] * len(nums)
dp[0] = nums[0]
for i in range(1, len(nums)):
dp[i] = max(dp[i-1] + nums[i], nums[i])
return max(dp)