?Leetcode链接
关键点要想到将序列分为以不同角标结束的最优解集合。
class Solution {
public:
int maxSubArray(vector<int>& nums) {
vector<int> res(nums.size(), INT_MIN);
res[0] = nums[0];
for(int i = 1; i < nums.size(); ++i) {
if(nums[i] + res[i - 1] > nums[i]) {
res[i] = nums[i] + res[i - 1];
} else {
res[i] = nums[i];
}
}
int max = INT_MIN;
for(int i = 0; i < res.size(); ++i) {
if(res[i] > max)
max = res[i];
}
return max;
}
};