动态规划类题目,定义了两个变量a和maxx,a用来记录每个数及之前的数相加的最大值,既dp[i],如果dp[i-1]>0,那么dp[i]+dp[i-1]一定大于dp[i],反之小于,所以只需要每次判断a是否大于0,更新a的值,并判断a与maxx大小,更新maxx。
class Solution { public int maxSubArray(int[] nums) { int maxx=nums[0]; int a=nums[0]; for(int i=1;i<nums.length;i++) { if(a>=0) a=nums[i]+a; else a=nums[i]; if(a>maxx) maxx=a; } return maxx; } }