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
思路:
1.设置数组第一个元素为局部和全局最大值, 遍历数组
2.逐渐把后面元素加入到局部最大值里面,并判断当前最大值与当前加进来的元素大小关系,取较大值更新局部最大值
3.判断当前局部最大值与上一步全局最大值大大小关系,取较大值,更新全局最大值
#include "iostream"
#include "vector"
#include "algorithm"
#include "cmath"
using namespace std;
class Solution{
public:
int maxSubArray(vector<int>& nums);
};
int Solution::maxSubArray(vector<int>& nums)
{
int length=nums.size();
if(length==1)
return nums[0];
int local_maxnum=nums[0];
int global_maxnum=nums[0];
for(int i=1;i<length-1;i++)
{
local_maxnum=max(local_maxnum+nums[i],nums[i]);
global_maxnum=max(local_maxnum,global_maxnum);
}
return global_maxnum;
}
int main()
{
return 0;
}