[LeetCode]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.

这是动态规划的一道较简单的题目。主要思想是,以下标为index的数字作为结尾的所有subarray中,和最大的那个子数列 ,与以下标为index-1的数字作为结尾的和最大的子数列有关系。

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int temp[nums.size()],max;
        for(int i = 0; i < nums.size(); i++){
            if(i==0){
                temp[i] = nums[i];
                max = nums[i];
            }
            else{
                if(temp[i-1]>0){
                    temp[i] = temp[i-1] + nums[i];
                }else{
                    temp[i] = nums[i];
                }
            }
            max = max>temp[i]?max:temp[i];
        }
        return max;
    }
};
posted @ 2017-11-22 16:44  liangf27  阅读(100)  评论(0编辑  收藏  举报