您的位置:首页 > 编程语言 > C语言/C++

LeetCode 53. 最大子序和 c++ python

2019-04-11 11:31 447 查看
[code]class Solution(object):
def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
sum = nums[0]
maxsum = nums[0]
for i in range(1,len(nums)):
if sum<0:
sum=nums[i]
else:
sum+=nums[i]
if sum>maxsum:
maxsum=sum
return maxsum
[code]class Solution {
public:
int maxSubArray(vector<int>& nums) {
// 分析遍历数组的情况。维持一个连续的数组元素和。
// 如果该数组的和大于0,那么加上一个元素之后的值肯定大于这个元素的值。
// 也就是说,从后一个元素开始的子数组和加上前面的数组会更大。
// 但是,如果当前的数组和是负数,加上后肯定没有从后一个元素开始的子数组的和大。
int max = nums[0];
int sum = nums[0];
for(int i = 1; i < nums.size(); i++){
if(sum < 0){
sum = nums[i];
}
else{

sum += nums[i];
}
if(sum > max){
max = sum;
}
}
return max;
}
};

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: