53. Maximum Subarray

来源:互联网 发布:比淘宝便宜又好的网站 编辑:程序博客网 时间:2024/05/18 03:18

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


原创粉丝点击