File tree Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution :
2
+ def maxSubArray (self , nums : List [int ]) -> int :
3
+ """
4
+ Intuition:
5
+ μ΄μ κΉμ§μ λμ ν©μμ νμ¬ μμλ₯Ό μΆκ°ν μ§ λ§μ§μ λν
6
+ κ²°μ μ λ§€ iterationλ§λ€ λ°λ³΅νλ€.
7
+ νμ¬ μμλ₯Ό μΆκ°νμ κ²½μ°(λμ ν© + νμ¬ μμ)μ
8
+ νμ¬ μμλ₯Ό μμμΌλ‘ νλ κ²½μ°(νμ¬ μμ)λ₯Ό λΉκ΅νμ¬
9
+ dp λ°°μ΄μ κ°±μ νλ€.
10
+
11
+ Time Complexity:
12
+ O(N):
13
+ 리μ€νΈλ₯Ό 1λ² μννλ©° λ΅μ μ°ΎμΌλ―λ‘,
14
+ O(N)μ μκ°λ³΅μ‘λκ° μμλλ€.
15
+
16
+ Space Complexity:
17
+ O(N):
18
+ dp λ°°μ΄μ Nκ°μ time stepμ μ μ₯νλ―λ‘
19
+ O(N)μ 곡κ°λ³΅μ‘λκ° μμλλ€.
20
+
21
+ Key takeaway:
22
+ μ΄κΈ°μλ two pointer λ°©μμ μκ°νμΌλ
23
+ ν΄κ²°μ νμ§ λͺ»ν΄μ λ΅μμ νμΈνλ€.
24
+ O(N)μ μκ°λ³΅μ‘λλ₯Ό κ°μ§λ κ²½μ°, DPλ νμ΄κ°
25
+ λ μ μμμ μΈμ§νμ.
26
+ """
27
+ dp = [0 for _ in nums ]
28
+ dp [0 ] = nums [0 ]
29
+ for i in range (1 , len (nums )):
30
+ cumsum = dp [i - 1 ] + nums [i ]
31
+ cur = nums [i ]
32
+ if cumsum > cur :
33
+ dp [i ] = cumsum
34
+ else :
35
+ dp [i ] = cur
36
+
37
+ return max (dp )
You canβt perform that action at this time.
0 commit comments