此博客链接:https://www.cnblogs.com/ping2yingshi/p/13047031.html
求连续最大子序列和
题目链接:https://leetcode-cn.com/problems/contiguous-sequence-lcci/
给定一个整数数组,找出总和最大的连续数列,并返回总和。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4]
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
题解:
思路:使用动态规划,当前值取决于上次值和本次值的和,判断,代码思路在代码中。
代码如下:
class Solution { public int maxSubArray(int[] nums) { int[] dp=new int [nums.length];//当前值所求的的最大值 dp[0]=nums[0];//初始化 int max=dp[0];//求最大值 for(int i=1;i<nus.length,i++) { if(nums[i]>nums[i]+dp[i-1])//如果当前值比前面值加上当前值小,和变小了,说明当前值为负数,则把dp置为当前值 dp[i]=nums[i]; else//如果当前值比前面和加上当前值小,即当前值为正数,和更大,则把当前值加入到dp中 dp[i]=nums[i]+dp[i-1]; max=Math.max(max,dp[i]); } return max; } }