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