给定一个整数数组 nums
,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
记得很早之前在书上看过类似的题目,所以看到这道题第一个想法就是在线学习,一个数字一个数字的读并且比较,时间开销很小复杂度很低。
python:
class Solution(object):
def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
n = len(nums)
if n == 0 :
return None
maxNum = nums[0]
sumNums = maxNum
for i in range(1,n):
if sumNums < 0:
sumNums = 0
sumNums += nums[i]
if sumNums > maxNum:
maxNum = sumNums
return maxNum
C++:
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int maxNum = nums[0];
int sumNums = maxNum;
for(int i = 1;i < nums.size();i++){
if(sumNums < 0) sumNums = 0;
sumNums += nums[i];
if(sumNums > maxNum) maxNum = sumNums;
}
return maxNum;
}
};