53. Maximum Subarray
Easy
5417226FavoriteShare
Given an integer array nums
, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.
Example:
Input: [-2,1,-3,4,-1,2,1,-5,4], Output: 6 Explanation: [4,-1,2,1] has the largest sum = 6.
Follow up:
If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.
Accepted
676,923
Submissions
1,505,298
动态规划,其实就是逐个遍历逐个分析
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int max_sum=0-(1<<31);
int cur_max=0;
for(int i=0;i<nums.size();i++){
cur_max+=nums[i];
//下面两个不能换位置,不然全负的时候会出错
if(max_sum<cur_max) max_sum=cur_max;
if(cur_max<0) cur_max=0;
}
return max_sum;
}
};