版权声明:stay-the-course https://blog.csdn.net/stay_the_course/article/details/84854507
class MaxSubArray {
public:
int maxSubArray(vector<int> &nums) {
// write your code here
// 判空
if (nums.size() == 0) {
return 0;
}
int tmpsum = nums[0];
int sum = tmpsum;
// 临时和和0比较,大于0说明当前数值可以加进去,小于0则说明当前这个数值太小,抵消了前面的累加和,更新临时和为当前值
// sum 记录上一个被抵消的区间的和,并且取每次的较大者
for (int i = 1; i < nums.size(); i++) {
tmpsum > 0 ? tmpsum += nums[i] : tmpsum = nums[i];
tmpsum > sum ? sum = tmpsum : sum;
}
return sum;
}
};