64,173
社区成员




53.最大子数组和
解题思路:
1.一开始想使用一个数组记录当前位置能够取到的最大的连续子数组和,然后遍历数组得到其中的最大值。
2.后面发现当前位置取到的最大值只跟前一个元素取到的最大值有关,那么我们用一个数不断记录前面的最大值就好了。然后最大值跟每个位置取得最大值比较看看是否能够更新
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int n = nums.size();
if(n == 1) return nums[0];
int ans = nums[0];
int ret = nums[0];
for(int i = 1; i < n; ++i) {
ans = max(nums[i] + ans, nums[i]); //遍历中不断记录从0到当前位置最大的连续子序列
ret = max(ans, ret); //记录最大的ans
}
return ret;
}
};