标签:数组 影响 相互 动态规划 pre else 取出 AMM 分析
class Solution { public int rob(int[] nums) { int len=nums.length; if(len==0)return 0; if(len==1)return nums[0]; int dp[]=new int[len]; dp[0]=nums[0];dp[1]=Math.max(nums[0],nums[1]); for(int i=2;i<len;i++){ dp[i]=Math.max(dp[i-2]+nums[i],dp[i-1]); } int k=0; for(int i=0;i<len;i++){ if(dp[i]>dp[k])k=i; } return dp[k]; } }
方法2:分开a,b通过奇偶分别维护一个数, 这样就可以保证组成最大和的数字不相邻
class Solution { public int rob(int[] nums) { int len=nums.length; if(len==0)return 0; if(len==1)return nums[0]; int a=0,b=0; for(int i=0;i<nums.length;i++){ if(i%2==0){ a=Math.max(a+nums[i],b); }else b=Math.max(b+nums[i],a); } return Math.max(a,b); } }
标签:数组 影响 相互 动态规划 pre else 取出 AMM 分析
原文地址:https://www.cnblogs.com/patatoforsyj/p/9474829.html