题目:
输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)
代码:
方法一——直接遍历,途中记录,O(n)时间复杂度:
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int len=nums.size();
int maxs=-INT_MAX;int cursum=0;
for(int i=0;i<len;i++){
cursum+=nums[i];
maxs=max(maxs,cursum);
if(cursum<0)cursum=0;
}
return maxs;
}
};
方法二——动态规划法: