53. 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.

在一个数组中找到连续的子数组(至少包含一个数字)。

例如,给定数组[-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 };
原文地址:https://www.cnblogs.com/sword-/p/7997931.html