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=
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步