Problem :
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
Example:
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.
**
Algorithm:
**
维护两个变量,一个local一个global,local表示局部最大值,global表示全局最大值,对于local每次给它加上一个值i,并把i和local+i比较,取较大值为新的local。如果取到i说明到了一个新的区间。
若有n个数,
时间复杂度为O(n)
**
Code:
class Solution {
public:
int maxSubArray(vector<int>& nums) {
if(nums.size()==0)
return 0;
if(nums.size()==1)
return nums[0];
int local=nums[0];
int global=nums[0];
for(int i=1;i<nums.size();i++)
{
local=max(nums[i],local+nums[i]);
global=max(local,global);
}
return global;
}
};