53. Maximum Subarray

Maximum Subarray


题目描述

Find the contiguous subarray within an array (containing at least one number) which has the largest sum.

For example, given the array [-2,1,-3,4,-1,2,1,-5,4],
the contiguous subarray [4,-1,2,1] has the largest sum = 6.

难度:Easy

题目大意:在数组中找到连续的子序列(至少包含一个数字),其和最大。 例如,给定阵列[-2,1,-3,4,1,2,1,-5,4], 连续的子阵列[4,1,2,1]具有最大的和 6。

解题思路


用动态规划解题:

记录当前的序列的和sum

记录前面连续的序列的和的最大值maxSum;

通过比较下一个数与之前的sum的和与下一个数的大小确定是否重新定义sum;

通过比较当前的sum与之前的maxSum的大小来确定目前连续序列的最大值。

复杂度O(n)


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


发布了69 篇原创文章 · 获赞 18 · 访问量 7万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览