[LeetCode]53. Maximum Subarray
题目描述
思路
动态规划
构建dp数组,保存到当前数时的最大和,同时维护更新最大值
最后返回最大值即可
代码
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Solution {
public:
int maxSubArray(vector<int>& nums) {
vector<int> dp;
dp.push_back(nums[0]);
int res = nums[0];
for (int i = 1; i < nums.size(); ++i) {
int temp = nums[i] + (dp[dp.size() - 1] > 0 ? dp[dp.size() - 1] : 0);
res = max(temp, res);
dp.push_back(temp);
}
return res;
}
};
int main() {
vector<int> nums = { -2,1,-3,4,-1,2,1,-5,4 };
Solution s;
cout << s.maxSubArray(nums) << endl;
system("pause");
return 0;
}
本文介绍了解决LeetCode上第53题最大子数组和的方法,采用动态规划策略,通过构建dp数组来记录每一步的最大子数组和,并最终找到全局最大值。
350

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



