题目描述:
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
.
寻找各元素相加最大的子数组,并返回该子数组各元素的和。
解题思路:
若一个数是负数的话,任何数与之相加sum肯定会减小。所以在遍历数组的时候只要看前面元素的sum是否为负数,负数的话直接从当前元素开始重新计算sum。
代码:
1 class Solution { 2 public: 3 int maxSubArray(vector<int>& nums) { 4 int sum=0; 5 int max=nums[0]; 6 for(int i=0;i<nums.size();i++){ 7 if(sum>=0) 8 sum+=nums[i]; 9 else 10 sum=nums[i]; 11 if(sum>max) 12 max=sum; 13 } 14 return max; 15 } 16 };