链接:https://leetcode-cn.com/problems/maximum-subarray/
复杂度
时间复杂度:O(n),其中 n为 nums 数组的长度。我们只需要遍历一遍数组即可求得答案。 空间复杂度:O(1)。我们只需要常数空间存放若干变量。
class Solution { public: int maxSubArray(vector<int>& nums) { if (nums.size() == 0) { return 0; } // 连续子数组最大和 int max_sum = INT_MIN; int temp_sum = 0; for (int i = 0; i < nums.size(); ++i) { temp_sum += nums[i]; max_sum = max(max_sum, temp_sum); // 如果当前和已经小于0,说明加上的这个数是小于0的,后面需要从0开始累加 if (temp_sum < 0) { temp_sum = 0; } } return max_sum; } };