1、题目描述
2、分析
求一个数组中最大子序和,首先应该想到的做法定义两个变量,一个cur,记录当前的子序和,一个res,最终的子序和。先将cur设置为0,res设置为INT_MIN,然后遍历数组,cur等于cur和cur+nums[i]中的大的值,res等于res和cur中大的值,这样最后返回res就是要求的最大值。
3、代码
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int res=INT_MIN,cur=0;
for(int i=0;i<nums.size();++i){
cur=max(nums[i],nums[i]+cur);
res=max(res,cur);
}
return res;
}
};
4、相关知识点
涉及到数组的题,上面的方法是一个很好的方法,只遍历一遍数组,然后不停迭代需要的值。这道题(买卖股票的最佳时机)也是通过这样的方法解决的。