描述:求数组中的连续子序列和
Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.
Example:
Input: [-2,1,-3,4,-1,2,1,-5,4],
Output: 6
Explanation: [4,-1,2,1] has the largest sum = 6.
Follow up:
If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.
该题属于特别经典的一道题目了,可以有4中解法,不过最好的还是DC O(N)和DP O(NlogN),自己尝试写的DP:
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
ThisSum = 0
MaxSum = nums[0]
#print(MaxSum)
for i in range(len(nums)):
ThisSum += nums[i]
while ThisSum > MaxSum:
MaxSum = ThisSum
if ThisSum < 0:
ThisSum = 0#负数不用再次参与运算,舍弃
return MaxSum
#时间复杂度已经是O(N)了,比分而治之的NlogN要快**加粗样式**