1 """
2 Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.
3 Example:
4 Input: [-2,1,-3,4,-1,2,1,-5,4],
5 Output: 6
6 Explanation: [4,-1,2,1] has the largest sum = 6.
7 """
8 """
9 最开始的想法复杂了:建一个n*n的二维数组,存储[i,j]的和
10 因为最后的output只要和的值,不需要求是哪些序列,所以此想法
11 实现起来麻烦,效率还低
12 """
13 """
14 正确的算法应为:贪心算法
15 subMaxSum = max(nums[i]+nums[i-1], nums[i])
16 nums[i] = subMaxSum
17 保证num[i]存的是i之前最大的和
18 """
19
20 class Solution:
21 def maxSubArray(self, nums):
22 length = len(nums)
23 for i in range(1, length):
24 #当前值的大小与前面的值之和比较,若当前值更大,则取当前值,舍弃前面的值之和
25 subMaxSum = max(nums[i]+nums[i-1], nums[i])
26 nums[i] = subMaxSum#将当前和最大的赋给nums[i],新的nums存储的为和值
27 return max(nums)