思路展示

当前连续和为负数的时候立刻放弃(因为负数加上下一个元素后,连续和智慧越来越小),从下一个元素重新计算连续和

示例代码

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int len=nums.size(),result=INT_MIN,count=0;
        for(int i=0;i<len;i++){
            count+=nums[i];
            //取区间累积的最大值(相当于不断确定最大子序列终止的位置)
            if(count>result){
                result=count;
            }
            //相当于重置最大子序列的其实位置,因为遇到负数一定是拉低总和
            if(count<0){
                count=0;
            }
        }
        return result;
    }
};
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.

效果展示

LeetCode--- 53. 最大子数组和(贪心)_示例代码