欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

dp1-力扣-java

程序员文章站 2022-03-24 20:37:33
...

DP思路:

https://leetcode-cn.com/problems/house-robber/solution/dong-tai-gui-hua-jie-ti-si-bu-zou-xiang-jie-cjavap/

 

dp1-力扣-java

class Solution {
    public int climbStairs(int n) {
        if(n<=2) return n;
        int []dp=new int[n+1];
        dp[1]=1;
        dp[2]=2;
        for(int i=3;i<=n;i++){
            dp[i]=dp[i-1]+dp[i-2];
        }
        return dp[n];
    }
}

dp1-力扣-java 

 

 

 

dp1-力扣-java 

class Solution {
    public int rob(int[] nums) {
        if(nums.length==0) return 0;
        int n=nums.length;
        int []dp=new int[n+1]; //// dp[i] 表示抢到第 i 个住户时的最大抢劫量。
        dp[1]=nums[0];
        for(int i=2;i<=n;i++){
            dp[i]=Math.max(dp[i-1],nums[i-1]+dp[i-2]);
        }
        return dp[n];
    }
}

dp1-力扣-java 

class Solution {
    public int rob(int[] nums) {
        if(nums.length==0) return 0;
        if(nums.length==1) return nums[0];
        int[] nums1=Arrays.copyOfRange(nums,0,nums.length-1);
        int[] nums2=Arrays.copyOfRange(nums,1,nums.length);
        return Math.max(maxx(nums1),maxx(nums2));
    }
    public int maxx(int []nums){
        if(nums.length==0) return 0;
        if(nums.length==1) return nums[0];
        int n=nums.length;
        int []dp=new int[n+1];
        dp[1]=nums[0];
        for(int i=2;i<=n;i++){
            dp[i]=Math.max(dp[i-1],dp[i-2]+nums[i-1]);
        }
        return dp[n];
    }
}
//https://leetcode-cn.com/problems/house-robber-ii/solution/dong-tai-gui-hua-by-javaniuniu-2/

 dp1-力扣-java

 

相关标签: 动态规划