Skip to content

Commit d304655

Browse files
committed
Solution: Maximum Subarray
1 parent 50d78a0 commit d304655

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

โ€Žmaximum-subarray/flynn.go

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
/*
2+
ํ’€์ด 1
3+
- ์•„๋ž˜์™€ ๊ฐ™์€ memo ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์„œ ํ’€์ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์ฐธ๊ณ : Kadane's Algorithm)
4+
memo[i] = nums[:i] ์ค‘์—์„œ nums[i]๋ฅผ ๋ฐ˜๋“œ์‹œ ํฌํ•จํ•˜๋Š” ๋ถ€๋ถ„ ๋ฐฐ์—ด์˜ ์ตœ๋Œ€ ํ•ฉ
5+
6+
Big O
7+
- N: ์ฃผ์–ด์ง„ ๋ฐฐ์—ด nums์˜ ๊ธธ์ด
8+
- Time complexity: O(N)
9+
- Space complexity: O(N)
10+
*/
11+
12+
func maxSubArray(nums []int) int {
13+
n := len(nums)
14+
15+
memo := make([]int, n)
16+
copy(memo, nums)
17+
18+
maxSum := nums[0]
19+
20+
for i := 1; i < n; i++ {
21+
if memo[i-1] > 0 {
22+
memo[i] += memo[i-1]
23+
}
24+
25+
if maxSum < memo[i] {
26+
maxSum = memo[i]
27+
}
28+
}
29+
30+
return maxSum
31+
}
32+
33+
/*
34+
ํ’€์ด 2
35+
- ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ „๊ฐœ ๊ณผ์ •์„ ๋ณด๋ฉด O(N)์˜ ๊ณต๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š” memo๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฑธ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
36+
- memo ๋ฐฐ์—ด ๋Œ€์‹  ํ˜„์žฌ ๊ณ„์‚ฐ ์ค‘์ธ ๋ถ€๋ถ„ ๋ฐฐ์—ด์˜ ํ•ฉ๋งŒ ๊ณ„์† ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค
37+
38+
Big O
39+
- N: ์ฃผ์–ด์ง„ ๋ฐฐ์—ด nums์˜ ๊ธธ์ด
40+
- Time complexity: O(N)
41+
- Space complexity: O(1)
42+
*/
43+
44+
func maxSubArray(nums []int) int {
45+
maxSum, currSum := nums[0], nums[0]
46+
47+
for i := 1; i < len(nums); i++ {
48+
if currSum > 0 {
49+
currSum += nums[i]
50+
} else {
51+
currSum = nums[i]
52+
}
53+
54+
if maxSum < currSum {
55+
maxSum = currSum
56+
}
57+
}
58+
59+
return maxSum
60+
}

0 commit comments

Comments
ย (0)