给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
ps: 清华大学912曾经考过。
状态转移方程
dp[i] = max(nums[i], dp[i-1] + nums[i])
边界条件
dp[0] = nums[0]
代码
class Solution {
public:int maxSubArray(vector<int>& nums) {int dp[30005] = {0};int len = nums.size();dp[0] = nums[0];int maxn = nums[0];for(int i = 1; i < len; i++){dp[i] = max(nums[i], dp[i-1] + nums[i]);if(dp[i] > maxn)maxn = dp[i];}return maxn;}
};