方法一
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int n = nums.size();
vector<int> dp(n);
dp[0] = nums[0];
int ans = nums[0];
for(int i = 1; i < n; ++i){
dp[i] = max(dp[i - 1] + nums[i], nums[i]);
if(dp[i] > ans)
ans = dp[i];
}
return ans;
}
};
Accepted
209/209 cases passed (128 ms)
Your runtime beats 5.79 % of cpp submissions
Your memory usage beats 5.15 % of cpp submissions (68.8 MB)
代码优化后
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int dp = 0, ans = nums[0];
for(auto num : nums){
dp = max(dp + num, num);
ans = max(ans, dp);
}
return ans;
}
};
Accepted
209/209 cases passed (88 ms)
Your runtime beats 69.3 % of cpp submissions
Your memory usage beats 53.28 % of cpp submissions (66.1 MB)