每一步都找到当前元素(自己)的最大子序列
有两种可能
- 当前元素和前面的子序列和合并
- 不和前面的合并
dp数组中存储的的每个值是以当前元素结尾的最大的子序列和
用一个变量动态的保存最大子序列的值,节省空间。
class Solution {
public int maxSubArray(int[] nums) {
int result=nums[0];
int sum=0;
for(int i=0;i<nums.length;i++){
sum=Math.max(nums[i],nums[i]+sum);
result=Math.max(sum,result);
}
return result;
}
}
js版本
var maxSubArray = function(nums) {
let result=nums[0];
let sum=0;
for(let n of nums){
sum=Math.max(n,n+sum);
result=Math.max(result,sum);
}
return result;
};
-2,1,-3,4,-1,2
比如,以-3结尾的最大子序列和是-2;
这道题主要是理解动态规划的思想。