思想:
时间复杂度O(N),空间复杂度O(1)。
从头到尾遍历,如果nums[i]比前面的子序列和大,则从nums[i]重新开始新的子序列,否则,加入nums[i]并延续前面的子序列。
res取所有这些子序列中最大的。
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int res = INT_MIN, tmp = 0;
for(int i = 0; i < nums.size(); i++) {
tmp = max(tmp+nums[i], nums[i]);
res = max(res, tmp);
}
return res;
}
};