[leetcode] 53. Maximum Subarray

来源:互联网 发布:as3 调用js 编辑:程序博客网 时间:2024/06/18 05:51

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.

解法一:

O(n)的解法。用一个global表示全局最大,一个local表示局部最大。那么局部最大的表达式是local = max(local+nums[i], nums[i]),也就是如果之前的局部最大为负数,不如不要,直接只用nums[i]。然后全局最优就是之前global和当前局部最优的max。


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


0 0
原创粉丝点击