LeetCode 53. Maximum Subarray
Solution1:我的答案
动态规划
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int n = nums.size();
if (!nums.size()) return -1;
if (nums.size() == 1) return nums[0];
int dp[n] = {0}, max_sum = INT_MIN;
dp[0] = nums[0];
max_sum = dp[0];
for (int i = 1; i < n; i++) {
dp[i] = nums[i] + max(dp[i-1], 0);
max_sum = max(max_sum, dp[i]);
}
return max_sum;
}
};
优化版:
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int temp = nums[0], res = temp;
for (int i = 1; i < nums.size(); i++) {
temp = nums[i] + max(temp, 0);
res = max(res, temp);
}
return res;
}
};