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/
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];
}
}
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];
}
}
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/
推荐阅读
-
【力扣算法】【python】对角线遍历
-
关于力扣第一题 ---两数之和(多方法)
-
力扣-11.9-46
-
力扣刷题笔记:1052.爱生气的书店老板(普通滑窗题,巧妙利用grumpy[i]的0、1值作为flag计算满意顾客人数)
-
荐 Java BigDecimalの食用方法,老大说我再用Double来进行数值的计算,造成的损失从我工资里扣!˚‧º·(˚ ˃̣̣̥⌓˂̣̣̥ )‧º·˚
-
力扣题目汇总(机器人返回原点,按奇偶排序,数字的补数)
-
力扣题目解答自我总结(二)
-
力扣题目解答自我总结(反转类题目)
-
力扣简单题合集(带答案)
-
力扣OJ 剑指 Offer 68 - II. 236. 二叉树的最近公共祖先