Leetcode 53. 最大子序和(简单)动态规划
题目:
给你输入一个整数数组 nums
,请你找在其中找一个和最大的子数组,返回这个子数组的和。
比如说输入 nums = [-3,1,3,-1,2,-4,2]
,算法返回 5,因为最大子数组 [1,3,-1,2]
的和为 5。
思路:
定义dp[i]为以i为结尾的子数组。dp[i]=max(nums[i],dp[i-1]+nums[i])
class Solution { public: int maxSubArray(vector<int>& nums) { int n=nums.size(); vector<int> dp(n); dp[0]=nums[0]; for(int i=1;i<n;++i){ dp[i]=max(nums[i],dp[i-1]+nums[i]); } int ret=nums[0]; for(int i=1;i<n;++i){ ret=max(ret,dp[i]); } return ret; } };
联系方式:emhhbmdfbGlhbmcxOTkxQDEyNi5jb20=