代码随想录第四十五天|爬楼梯、零钱兑换、完全平方数

news/2024/10/31 5:32:12/

代码随想录第四十五天|70、322、279

    • Leetcode 70. 爬楼梯
    • Leetcode 322. 零钱兑换
    • Leetcode 279. 完全平方数

Leetcode 70. 爬楼梯

题目链接: 爬楼梯
自己的思路:之前是用斐波那契做的,但是现在学了完全背包,可以将m=2拓展的更大一点,我们可以将楼顶n设为背包的容量,将m设为物品的容量,我们每次选物品,而且物品可以重复,问可以有多少种不同的选法,而且这种是要考虑顺序的问题的,所以和之前的组合总和其实是一个题目!!!!!

正确思路:

代码:

class Solution {public int climbStairs(int n) {//物品的数量int m=2;int[] dp= new int[n+1];dp[0] = 1;for (int j=0;j<=n;j++){  //遍历背包for (int i=1;i<=m;i++){  //遍历物品if (j>=i) dp[j]+=dp[j-i];}}return dp[n];}
}

Leetcode 322. 零钱兑换

题目链接: 零钱兑换
自己的思路:想不到!!!!

正确思路:这个题可以看做是一个完全背包问题,因为里面的钱是可以任意取重复个的!动规五部曲:1、dp数组的含义:dp[j]表示的是当总金额为j时组成总金额的钱币的最小数量!2、递推公式:我们拿当第i个钱币来算,如果我们不选这个钱币,那么就是dp[j]情况,那么如果选的话就是dp[j-coins[i]]+1,所以说取两者的最小值;3、dp数组初始化:dp[0]肯定是0,主要是其他的我们要初始化为什么,因为我们是求min值,所以我们应该将他们都初始化为Integer的最大值;4、遍历顺序:由于这道题是求最小的数量,所以先遍历背包和先遍历物品其实是一样的;5、打印dp数组:主要是用于debug!!!

代码:

class Solution {public int coinChange(int[] coins, int amount) {int[] dp = new int[amount+1];for (int i =0;i<dp.length;i++){dp[i] = Integer.MAX_VALUE;}dp[0] = 0;for (int i=0;i<coins.length;i++){for (int j=coins[i];j<=amount;j++) {//当dp[m]有效的时候,才可以向后更新,不然没有意义if (dp[j-coins[i]]!=Integer.MAX_VALUE){dp[j] = Math.min(dp[j],dp[j-coins[i]]+1);}}}return (dp[amount]==Integer.MAX_VALUE)?-1:dp[amount];}
}

Leetcode 279. 完全平方数

题目链接: 完全平方数
自己的思路:和上一个题基本一样,怪自己懒得思考!!!!

正确思路:只是改变了一下循环中的参数的定义,其他基本都是不变的,这个题一定可以由完全平方数组成,所以我们初始化的时候非零的索引初始化为n,因为dp[n]最大是n!!!
代码:

class Solution {public int numSquares(int n) {int[] dp = new int[n+1];for (int i =0;i<dp.length;i++){dp[i]=n;}dp[0]=0;for (int i =1;i*i<=n;i++){for (int j=i*i;j<=n;j++){if (dp[j-i*i]!=n){dp[j]=Math.min(dp[j],dp[j-i*i]+1);}}}return dp[n];}
}

http://www.ppmy.cn/news/230731.html

相关文章

惠普塔式工作站 Z240 开启 虚拟化 VT

开机 进入BIOS 设置&#xff0c; 如下图所示&#xff1a; Advanced --> System Optioins --> Early PEIe Delay.

台式计算机 z420 hp,迷你身材,扩展动力HPZ420报9588元

HPZ420工作站专为满足主流的计算与可视化需求而设计&#xff0c;在易于拆卸的免工具迷你塔式外形中提供了专业级可扩展性。 HPZ420工作站拥有英特尔?至强?E5-1600与E5-2600系列处理器的选择&#xff0c;采用新的英特尔?C602芯片组&#xff0c;提供多达8个内核的处理能力。HP…

惠普Z820安装win10系统攻略(固态作为系统盘)——思小瓜

1、准备u盘大于8G 2、找到制作u盘启动盘的网站 https://cn.ultraiso.net/xiazai.html 下载UltralSO软件&#xff0c;制作u盘启动盘&#xff0c;&#xff08;注意只能从那个网址上下载安装&#xff0c;联想商店里下的有问题&#xff09; 3、下载好的win10.iso 4、按步骤制作…

惠普z240工作站装Linux,已解决: 求解如何加装硬件提高z240sff工作站性能 - 惠普支持社区 - 820413...

happyma2017 已写&#xff1a; 前面有部分回答我感觉不准确。 1-关于内存&#xff0c;Z240使用的内存是非ECC内存&#xff0c;如果你再加一条同容量同频率内存&#xff0c;机器性能会有明显提升&#xff0c;组成双通道后&#xff0c;内存位宽会由64位变为128位&#xff0c;对内…

惠普Z840工作站使用U盘安装ubuntu16.04以及grub无法引导问题总结(干货)

一、制作U盘启动盘 具体过程可参考该博客&#xff1a;https://blog.csdn.net/yaoyut/article/details/78003061 从Ubuntu官网http://cn.ubuntu.com/download/下载你需要安装的系统的iso文件 &#xff08;用来制作的U盘需要是FAT32格式的&#xff0c;可以通过格式化U盘更改&am…

HP Z840 工作站配sSAS Raid 安装 Ubuntu 16.04 系统

惠普Z840工作站配SAS RAID安装win7系统加载驱动 安装ubuntu的最低版本版本要求是01.25&#xff0c;请更新到官方最新的02.31测试 1. BIOS系统更新 1. 准备好一个空的U盘&#xff0c;格式化成FAT32&#xff0c;在U盘上建立\Hewlett-Packard\BIOS\New 2. 下载链接http://ftp.hp…

hp z840 上安装ESXi

ESXi安装 镜像下载 VMware-viclient-all-5.1.0-2306356.exe VMware-ESXi-5.1.0-Update3-2323236-HP-510.9.4.24-Nov2015.iso VMware ESXi定制版下载&#xff08;包含HP\DELL\Lenovo\Cisco\NEC等&#xff09;vmware vsphere esxi 5.1添加许可证VMware-ESXi-6.0.0-Update1-3380…

第十一届蓝桥杯国赛JavaB组题解

A. 美丽的2 思路&#xff1a; 枚举 1 到 2020 的每个数&#xff0c;依次判断即可。 代码&#xff1a; public class Main {public static boolean check(int x) {while (x ! 0) {if (x % 10 2) return true;x / 10;}return false;}public static void main(String[] args) …