版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jsszwc/article/details/87868457
题目:
https://leetcode-cn.com/problems/maximum-subarray/
题意:
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
思路:
做法很多,目前用的是动态规划。定义
为以第
个元素结尾的最大连续和,那么有状态转移方程:
最后取
的最大值即可
代码:
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int ans = 0;
for(int i = 0; i < nums.size(); i++) {
if(i == 0) {
ans = nums[i];
} else {
nums[i] = max(nums[i], nums[i-1] + nums[i]);
ans = max(ans, nums[i]);
}
}
return ans;
}
};