题目描述 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1]的和最大,为 6。 解决方案 对于此题,将采用动态规划进行分析: 对数组的每一个下标所能得到的最大值进行记录; 通过判断上一个下标的最大值是否大于0,大于0则用当前下标所对应的值加上上一个下标。反之,小于则不取上一个下标的最大值(因为若是上一个下标所对应的数组最大值小于0,那么当前下标的数组最大和就等于它本身)。 动态递推公式:dp[i] = max(dp[i-1], 0)+nums[i] 代码示例:
结语 本题是一道简单的动态规划的题目,更多的是对动态规划的理解与记忆,希望对读者有所帮助。 主 编 | 王楠岚 责 编 | WZY 能力越强,责任越大。实事求是,严谨细致。 ——where2go 团队 |
|