原题链接:最大子数组和
个人解法
思路:
动态规划
状态表示:f[i]表示以i结尾的最大字数组的和
状态转移:f[i] = max(f[i - 1] + nums[i], nums[i])
时间复杂度: O ( n ) O(n) O(n)
代码:
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int n = nums.size();
vector<int> f(n + 1);
for(int i = 1;i <= n;i ++) {
f[i] = max(f[i - 1] + nums[i - 1], nums[i - 1]);
}
int res = -10010;
for(int i = 1;i <= n;i ++) res = max(res, f[i]);
return res;
}
};