
1 /* 2 * @Author: yaodaoteng 3 * @Date: 2020-11-26 20:45:05 4 * @LastEditors: yaodaoteng 5 * @LastEditTime: 2020-11-26 20:57:48 6 * @FilePath: \git\leetcode\53.最大子序和.cpp 7 */ 8 /* 9 * @lc app=leetcode.cn id=53 lang=cpp 10 * 11 * [53] 最大子序和 12 */ 13 14 // @lc code=start 15 class Solution { 16 public: 17 //动态规划 18 // dp[i]表示必须以nums[i]结尾的最大连续序列和,这个最大连续序列和要么是nums[i]本身,要么是nums[i]+dp[i-1] 19 20 int maxSubArray(vector<int>& nums) { 21 int res = nums[0]; 22 int dp[nums.size()]; 23 dp[0] = nums[0]; 24 for (int i = 1; i < nums.size();i++){ 25 if(dp[i-1]+nums[i]>=nums[i]) 26 dp[i] = dp[i - 1] + nums[i]; 27 else 28 dp[i] = nums[i]; 29 if(dp[i]>res) 30 res = dp[i]; 31 32 } 33 return res; 34 } 35 }; 36 // @lc code=end
浙公网安备 33010602011771号