写在前面: 这是力扣上的一道easy题,这种求最大子序列的题很经典,解法也有很多,我这种方法应该属于动态规划的思想,具体思路在js代码中注释了,欢迎交流~
我的力扣github仓库,有JavaScript和C++两个版本,每日更新,觉得有用的同学请点个star~
C++代码:
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int max=nums[0],sum=0;
for(int i=0;i<nums.size();i++){
if(sum>0)
sum+=nums[i];
else
sum=nums[i];
max=max(max,sum);
}
return max;
}
};
JS代码:
/**
* @param {number[]} nums
* @return {number}
*/
var maxSubArray = function(nums) {
var max=nums[0],sum=0;
for(let i=0;i<nums.length;i++){
if(sum>0) //sum为正才有继续累加增大的可能
sum+=nums[i];
else //sum为负sum+nums[i]必小于nums[i]
sum=nums[i];
max=Math.max(max,sum);
}
return max;
};