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;
    }
};


已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页