forked from DaleStudy/leetcode-study
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtaurus09318976.py
More file actions
55 lines (45 loc) ยท 1.79 KB
/
taurus09318976.py
File metadata and controls
55 lines (45 loc) ยท 1.79 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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#์ด ๋ฌธ์ ๋ ์นด๋ฐ์ธ ์๊ณ ๋ฆฌ์ฆ(Kadane's Algorithm) ๋ฌธ์ ๋ก
#์๋ ๋ฐฐ์ด์์ ์ฐ์๋ ์์๋ค๋ก๋ง ๊ตฌ์ฑ๋ ์ต๋ ๋ถ๋ถ ๋ฐฐ์ด ํฉ์ ์ฐพ๋ ๋ฌธ์ ์
class Solution:
def maxSubArray(self, nums: List[int]):
#max_sum: ์ง๊ธ๊น์ง ๋ฐ๊ฒฌํ ๊ฐ์ฅ ํฐ ๋ถ๋ถ ๋ฐฐ์ด์ ํฉ
#current_sum: ํ์ฌ ๊ณ ๋ ค ์ค์ธ ๋ถ๋ถ ๋ฐฐ์ด์ ํฉ
#์์ ๋์ ์ฒซ๋ฒ์งธ ์์๋ก ์ด๊ธฐํ
max_sum = current_sum = nums[0]
#๋ ๋ฒ์งธ ์์๋ถํฐ ์์
for num in nums[1:]:
#ํ์ฌ ์ซ์๋ฅผ ํฌํจํ ์๋ก์ด ๋ถ๋ถ ๋ฐฐ์ด์ ํฉ ๊ณ์ฐ
current_sum = max(num, current_sum + num)
#num: ํ์ฌ ์ซ์๋ง์ผ๋ก ์๋ก์ด ๋ถ๋ถ ๋ฐฐ์ด ์์
#current_sum + num: ๊ธฐ์กด ๋ถ๋ถ ๋ฐฐ์ด์ ํ์ฌ ์ซ์ ์ถ๊ฐ
#์ต๋ ํฉ ์
๋ฐ์ดํธ
max_sum = max(max_sum, current_sum)
return max_sum
# ํ
์คํธ ์ผ์ด์ค
solution = Solution()
# ํ
์คํธ 1
test1 = [-2,1,-3,4,-1,2,1,-5,4]
print(f"Expected: 6")
print(f"Result: {solution.maxSubArray(test1)}")
# ํ
์คํธ 2
test2 = [1]
print(f"Expected: 1")
print(f"Result: {solution.maxSubArray(test2)}")
# ํ
์คํธ 3
test3 = [5,4,-1,7,8]
print(f"Expected: 23")
print(f"Result: {solution.maxSubArray(test3)}")
#์๊ฐ ๋ณต์ก๋: O(n)
#n = nums์ ๊ธธ์ด
#for ๋ฃจํ๊ฐ ๋ฐฐ์ด์ ๊ธธ์ด๋งํผ ํ ๋ฒ ์คํ๋จ
#๊ฐ ๋ฐ๋ณต์์ ์ํํ๋ ์ฐ์ฐ:
#max(num, current_sum + num): O(1)
#max(max_sum, current_sum): O(1)
#๋ฐ๋ผ์ ์ ์ฒด ์๊ฐ ๋ณต์ก๋๋ O(n)์
#๊ณต๊ฐ ๋ณต์ก๋: O(1)
#์ถ๊ฐ๋ก ์ฌ์ฉํ๋ ๊ณต๊ฐ:
#max_sum: O(1)
#current_sum: O(1)
#num: O(1)
#์
๋ ฅ ํฌ๊ธฐ n๊ณผ ๋ฌด๊ดํ๊ฒ ์์ ๊ฐ์์ ๋ณ์๋ง ์ฌ์ฉ
#๋ฐ๋ผ์ ๊ณต๊ฐ ๋ณต์ก๋๋ O(1)์