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.
就是求最大的连续子串和
class Solution(object):
def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
max_num=-2**31
this=0
for i in range(0,len(nums)):
if this<0:
this=0
this+=nums[i]
max_num=max(max_num,this)
return max_num
其实两句话可以概括,第一是存储,到当前的最大值,第二只要是正数,就可以一直往后加。
我刚开始的时候一直是想着前面几个值相加会不会影响后面的值,取不到最大值,后来感觉只要前几个相加是正数,就可以一直往后加,然后中间别忘比对最大值就行。