题目:
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.
解答:
//贪心算法,时间复杂度O(n)
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int ans = -100000000;
int sum = 0;
int temp = nums[0] ;
int n = nums.size();
for(int i=0; i<n; i++)
{
if(temp < nums[i])
temp = nums[i]; //最大值
sum = sum + nums[i];
if(sum > ans)
ans =sum;
if(sum < 0) //sum为0,前面的这个数必然为负数,舍弃
sum =0;
}
if(temp <= 0) //如和为负数,则直接答案为最大值
ans = temp;
return ans;
}
};