美文网首页
最大子序和

最大子序和

作者: 狂风无迹 | 来源:发表于2019-09-28 10:57 被阅读0次

    给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

    输入: [-2,1,-3,4,-1,2,1,-5,4],
    输出: 6
    解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。

    解法:这是个简单题,在解的时候只要考虑到当前子序和为正,就会对后续和有叠加作用。因此,只要记录已经找到的最大和,然后向后搜索,只要当前和为负值,就将其抛弃,重新开始。

    class Solution {
    public:
        int maxSubArray(vector<int>& nums) {
            if(nums.size() == 0) {
                return 0;
            }
            if(nums.size() == 1) {
                return nums[0];
            }
            int sum = nums[0];
            int temp = sum;
            for(int i=1; i<nums.size(); i++) {
                if(temp < 0 ) {
                    temp = nums[i];
                }
                else {
                    temp = temp + nums[i];
                }
                if(temp > sum) {
                    sum = temp;
                }
            }
            return sum;
        }
    };
    

    相关文章

      网友评论

          本文标题:最大子序和

          本文链接:https://www.haomeiwen.com/subject/vagtyctx.html