Skip to content

Commit 584dd73

Browse files
committed
53. 最大子序和
1 parent 750a917 commit 584dd73

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

dp/53_maxSubArray.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
from typing import List
2+
3+
4+
class Solution:
5+
def maxSubArray_dp(self, nums: List[int]) -> int:
6+
n = len(nums)
7+
dp = [nums[0]] * n
8+
ans = dp[0]
9+
for i in range(1, n):
10+
dp[i] = max(dp[i - 1] + nums[i], nums[i])
11+
ans = max(dp[i], ans)
12+
13+
return ans
14+
15+
def maxSubArray_dp1(self, nums: List[int]) -> int:
16+
n = len(nums)
17+
ans = cur = nums[0]
18+
for i in range(1, n):
19+
cur = max(cur + nums[i], nums[i])
20+
ans = max(ans, cur)
21+
return ans
22+
23+
def maxSubArray_greed(self, nums: List[int]) -> int:
24+
if not nums:
25+
return float('-inf')
26+
cur_sum = max_sum = nums[0]
27+
28+
for i in range(1, len(nums)):
29+
cur_sum = max(cur_sum + nums[i], nums[i])
30+
max_sum = max(cur_sum, max_sum)
31+
return max_sum
32+
33+
34+
if __name__ == '__main__':
35+
nums = [-2, 1, -3, 4, -1, 2, 1, -5, 4]
36+
solution = Solution()
37+
print(solution.maxSubArray_greed(nums))

0 commit comments

Comments
 (0)