给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/maximum-subarray
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
针对数组中的每个元素,都有一个以这个元素作为最后一个元素的和最大的子序列,求出每个元素对应这个子序列的最大值,进行比较就可以求出满足题目要求的子序列最大和。
具体针对一个元素nums[i],以f[i]表示该元素对应子序列的最大值,
f[i] = max{nums[i], f[i]+nums[i]}
代码:
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int sum=0;
int index=0;
int max=nums[0];
for(int i=0;i<nums.size();i++){
sum+=nums[i];
if(sum>max) max=sum;
if(sum<0)sum=0;
}
return max;
}
};