思想:
时间复杂度O(N),空间复杂度O(1)。
从头到尾遍历,如果nums[i]比前面的子序列和大,则从nums[i]重新开始新的子序列,否则,加入nums[i]并延续前面的子序列。
res取所有这些子序列中最大的。
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int res = INT_MIN, tmp = 0;
for(int i = 0; i < nums.size(); i++) {
tmp = max(tmp+nums[i], nums[i]);
res = max(res, tmp);
}
return res;
}
};
本文介绍了一种算法,用于在给定整数数组中找到最大子序列和。该算法的时间复杂度为O(N),空间复杂度为O(1),通过迭代遍历数组并使用动态规划思想,实现高效求解。重点在于理解如何在不使用额外空间的情况下优化搜索过程。
231

被折叠的 条评论
为什么被折叠?



