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.
分析:
要求最大子数组,定义两个变量res和cur_num,依次遍历nums,比较cur_num+nums[i] 和 nums[i],将较大值存入cur_num,再比较res和cur_num,将较大值存入res。
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int res = nums[0];
int cur_num = 0;
for(int i=0; i<nums.size(); i++)
{
if(cur_num+nums[i] > nums[i])
cur_num = cur_num+nums[i];
else
cur_num = nums[i];
if(res < cur_num)
res = cur_num;
}
return res;
}
};