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
.
在一个数组中找到连续的子数组(至少包含一个数字)。
例如,给定数组[-2,1,-3,4,-1,2,1,-5,4]
,连续的子数组[4,-1,2,1]
具有最大的sum = 6
。
(1)思想1:定义两个变量result和cursum,其中result保存最终要返回的结果,即最大的子数组之和,cursum初始值为0,每遍历一个数字nums[i],比较curSum + nums[i]和nums[i]中的较大值存入cursum,然后再把res和cursum中的较大值存入result,以此类推直到遍历完整个数组,可得到最大子数组的值存在result中,代码如下:
1 class Solution { 2 public: 3 int maxSubArray(vector<int>& nums) { 4 int cursum=0; 5 int result=INT_MIN; 6 for(int i=0;i<nums.size();i++) 7 { 8 cursum=max(cursum+nums[i],nums[i]); 9 result=max(result,cursum); 10 } 11 return result; 12 13 } 14 };