原题链接:https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/
题意:
输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。
要求时间复杂度为O(n)。
方法:滑动窗口右侧坐标右移扫描,记录更新最大值
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int maxn = -101;//最大值
int right=0,sum=0;//右侧坐标,总和
int len = nums.size();//数字的多少
while(right<len)//滑动窗口右侧坐标更新
{
sum+=nums[right];//更新综合
maxn = max(maxn,sum);//每一轮都更新能不能找到最大值
if(sum<0)//如果总和小于0,就放弃这个值
{
sum = 0;//重置sum
}
right++;//滑动窗口右移
}
return maxn;//返回最大值
}
};