Skip to content

Commit 04b8deb

Browse files
committed
feat: [Week 03-5] solve maximum-subarray
1 parent c5b614d commit 04b8deb

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

β€Žmaximum-subarray/Chaedie.pyβ€Ž

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
"""
2+
Solution1:
3+
sliding window 일 것 κ°™μ§€λ§Œ κ΅¬ν˜„μ΄ μ–΄λ €μ›Œ 일단 Brute Force λΆ€ν„° μ§„ν–‰ν•©λ‹ˆλ‹€.
4+
-> μ‹œκ°„ 초과둜 μ‹€νŒ¨
5+
6+
Time: O(n^2) = n(for) * n(for)
7+
Space: O(n) = cur λ°°μ—΄
8+
"""
9+
10+
11+
class Solution:
12+
def maxSubArray(self, nums: List[int]) -> int:
13+
n = len(nums)
14+
max_sum = float(-inf)
15+
for i in range(n):
16+
cur = []
17+
cur_sum = 0
18+
for j in range(i, n):
19+
cur_sum += nums[j]
20+
cur.append(nums[j])
21+
max_sum = max(max_sum, cur_sum)
22+
return max_sum
23+
24+
25+
"""
26+
Solution2:
27+
Sliding Window둜 ν’€ 수 μžˆμ„κ±°λΌ μƒκ°ν–ˆλŠ”λ° 잘 μ•ˆλ˜μ—ˆμŠ΅λ‹ˆλ‹€.
28+
"""
29+
30+
31+
class Solution:
32+
def maxSubArray(self, nums: List[int]) -> int:
33+
n = len(nums)
34+
max_sum = float(-inf)
35+
36+
l = 0
37+
window = 0
38+
for r in range(n):
39+
window += nums[r]
40+
max_sum = max(max_sum, window)
41+
while max_sum < window:
42+
l += 1
43+
44+
return max_sum
45+
46+
47+
"""
48+
Solution3 - μ•Œκ³ λ‹¬λ ˆ:
49+
μ†”λ£¨μ…˜μ„ 톡해 ν•™μŠ΅ν–ˆμŠ΅λ‹ˆλ‹€.
50+
이해가 μ–΄λ €μ›Œ λ‹€μ‹œ ν’€μ–΄λ³Ό μ˜ˆμ •μž…λ‹ˆλ‹€.
51+
52+
Time: O(n)
53+
Space: O(1)
54+
"""
55+
56+
57+
class Solution:
58+
def maxSubArray(self, nums: List[int]) -> int:
59+
max_sum = nums[0]
60+
cur_sum = 0
61+
for num in nums:
62+
cur_sum = max(cur_sum + num, num)
63+
max_sum = max(cur_sum, max_sum)
64+
return max_sum

0 commit comments

Comments
Β (0)