lintcode --最大子数组(c++实现)

版权声明: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;
    }

};

猜你喜欢

转载自blog.csdn.net/stay_the_course/article/details/84854507