代码随想录第45天|70. 爬楼梯,322. 零钱兑换,279.完全平方数

 

70. 爬楼梯

开始按感觉做

class Solution {public int climbStairs(int n) {//第一版按感觉做//dp[i]爬到第i个台阶的方法数int[] dp=new int[n+1];//初始化dp[0]=1;dp[1]=1;for(int i=2;i<=n;i++){dp[i]=dp[i-1]+dp[i-2];}return dp[n];}
}

改进-用完全背包做

这是背包里求排列问题,即:1、2 步 和 2、1 步都是上三个台阶,但是这两种方法不一样!

需要先遍历背包再遍历物品

class Solution {public int climbStairs(int n) {//用完全背包做//dp[i]爬到第i个台阶的方法数int[] dp=new int[n+1];int m = 2; //有兩個物品:itme1重量爲一,item2重量爲二//初始化dp[0]=1;for(int j=1;j<=n;j++){//遍历背包for(int i=1;i<=m;i++){//遍历物品if(j>=i){dp[j]+=dp[j-i];}}}return dp[n];}
}

322. 零钱兑换

也是一个完全背包问题,但要注意和518.零钱兑换II的区别,

动规五部曲分析如下:

1.确定dp数组以及下标的含义

dp[j]:凑足金额为j所需钱币的最少个数

2.确定递推公式

凑足金额为j-coins[i]的最少个数是dp[j-coins[i]],那么只需加上一个钱币coins[i]即dp[j-coins[i]]+1就是dp[j],所以dp[j]要取所以dp[j-coins[i]]+1中最小的。递推公式:dp[j]=min(dpp[j-coins[i]]+1,dp[j]);

3.dp数组如何初始化

凑足总金额为0需要的钱币个数一定是0,那么dp[0]=0

其他下标应该初始化为INT_MAX,否则就会在min(dpp[j-coins[i]]+1,dp[j])比较的过程中被初始值覆盖。所以下标非-元素都应该是最大值。

4.遍历顺序

都可以,因为本题求的是最小个数,于集合是组合还是排列没有关系

5.推导dp

先遍历物品再遍历背包,dp[amount]是最终结果

代码实现

class Solution {public int coinChange(int[] coins, int amount) {//完全背包//dp[i]表示凑成金额为i所需的最少硬币个数int[] dp=new int[amount+1];dp[0]=0;for(int i=1;i<dp.length;i++){dp[i]=Integer.MAX_VALUE;}for(int i=0;i<coins.length;i++){for(int j=coins[i];j<=amount;j++){// if(coins[i]<=j){if (dp[j - coins[i]] != Integer.MAX_VALUE) {//如果是dp[j - coins[i]等于Integer.MAX_VALUE,那么+1后溢出,变成-2147483648dp[j]=Math.min(dp[j],dp[j-coins[i]]+1);}}}return dp[amount]>amount?-1:dp[amount];//或者return dp[amount]==Integer.MAX_VALUE?-1:dp[amount];}
}

 这道题的时候卡住了,一开始在for循环里面是写的if(coins[i]<=j)这个条件,然后出现下面用例报错: 后面优化成 if (dp[j - coins[i]] != Integer.MAX_VALUE)

 

279.完全平方数

这道题和322. 零钱兑换思路基本一致

1.dp的定义

dp[i]表示组成和为i的最少完全平方数个数

2.初始化

组成0的最少完全平方数个数是0,其他非0下标初始化为最大数Integer.MAX_VALUE

3.递推公式

 dp[j]=Math.min(dp[j],dp[j-i*i]+1); 

4.遍历顺序

这道题要求的是最少和排列还是组合没有关系,因此先遍历背包还是先遍历物品都是可以的

5.推导dp

代码实现

class Solution {public int numSquares(int n) {//dp[i]含义:组成和为i的完全平方数的最少数量int[] dp=new int[n+1];//初始化dp[0]=0;//组成和为0的完全平方数是0for(int i=1;i<dp.length;i++){dp[i]=Integer.MAX_VALUE;}//for(int i=1;i*i<=n;i++){//遍历物品for(int j=i*i;j<=n;j++){//遍历背包if(j>=i*i&&dp[j-i*i]!=Integer.MAX_VALUE){//这个条件加不加都可以过dp[j]=Math.min(dp[j],dp[j-i*i]+1);        }}}return dp[n];}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/127586.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu server 更改时区:上海

1. 打开终端&#xff0c;在命令行中以超级用户或具有sudo权限的用户身份运行以下命令&#xff1a; sudo dpkg-reconfigure tzdata 这会打开一个对话框&#xff0c;用于选择系统的时区设置。 2. 在对话框中&#xff0c;使用上下箭头键在地区列表中选择"Asia"&#x…

vue表格不显示列号123456

我在网上找了半天&#xff0c;都是如何添加列号123456的&#xff0c;没有找到不显示列号的参考&#xff0c;现在把这个解决了&#xff0c;特此记录一下。 没有加右边的就会显示&#xff0c;加上右边的就隐藏了

npm/yarn link 测试包时报错 Warning: Invalid hook call. Hooks can only be called ...

使用 dumi 开发 React 组件库时&#xff0c;为避免每次修改都发布到 npm&#xff0c;需要在本地的测试项目中使用 npm link 为组件库建立软连接&#xff0c;方便本地调试。 结果在本地测试项目使用 $ npm link 组件库 后&#xff0c;使用内部组件确报错&#xff1a; react.dev…

Redis十大数据类型

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; Java从入门到精通 ✨特色专栏&#xf…

腾讯音乐基于 Apache Doris + 大模型构建全新智能数据服务平台

当前&#xff0c;大语言模型的应用正在全球范围内引发新一轮的技术革命与商业浪潮。腾讯音乐作为中国领先在线音乐娱乐平台&#xff0c;利用庞大用户群与多元场景的优势&#xff0c;持续探索大模型赛道的多元应用。本文将详细介绍腾讯音乐如何基于 Apache Doris 构建查询高效、…

基于Python+DenseNet121算法模型实现一个图像分类识别系统案例

目录 介绍在TensorFlow中的应用实战案例最后 一、介绍 DenseNet&#xff08;Densely Connected Convolutional Networks&#xff09;是一种卷积神经网络&#xff08;CNN&#xff09;架构&#xff0c;2017年由Gao Huang等人提出。该网络的核心思想是密集连接&#xff0c;即每…

Python实现猎人猎物优化算法(HPO)优化循环神经网络回归模型(LSTM回归算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei& Keynia于2022年提出的一种最新的…

【基础计算机网络1】认识计算机网络体系结构,了解计算机网络的大致模型(上)

前言 今天&#xff0c;小编我也要进入计算机网络的整个内容&#xff0c;虽然这个计算机网络的内容在考研部分中占比比较小&#xff0c;有些人不把这一部分当成重点&#xff0c;这种想法是错误的。我觉得考研的这四个内容都是非常重要的&#xff0c;我们需要进行全力以赴的对待每…

二叉树(上)

“路虽远&#xff0c;行则将至” ❤️主页&#xff1a;小赛毛 目录 1.树概念及结构 1.1树的概念 1.2 树的相关概念 1.3 树的表示&#xff08;树的存储&#xff09; 2.二叉树概念及结构 2.1概念 2.2现实中的二叉树 2.3 特殊的二叉树&#xff1a; 2.4 二叉树的性质 3.二叉树的顺…

RabbitMq消息模型-队列消息

队列消息分为2种&#xff1a; 基本模型&#xff08;SimpleQueue&#xff09;、工作模型&#xff08;WorkQueue&#xff09; 队列消息特点&#xff1a; 消息不会丢失 并且 有先进先出的顺序。消息接收是有顺序的&#xff0c;不是随机的&#xff0c;仅有一个消费者能拿到数据&…

Java 【异常】

一、认识异常 Exception 在 Java 中&#xff0c;将程序执行过程中发生的不正常行为称为异常 。 异常是异常exception&#xff0c;报错是报错error 1.算数异常 0不能作为除数&#xff0c;所以算数异常 2.空指针异常 arr不指向任何对象&#xff0c;打印不出arr的长度&#xff0c;…

Spring 6.X IoC 容器

目录 一、Spring IoC 容器和 Bean 简介1.1、容器概述1.3、使用 一、Spring IoC 容器和 Bean 简介 下面主要介绍 Spring 框架对控制反转 (IoC) 原理的实现 首先要说明的是&#xff1a;IoC 也称为依赖注入&#xff0c;这是一个过程。 其次依赖项的定义&#xff1a;对象仅通过构造…

C#,《小白学程序》第十六课:随机数(Random)第三,正态分布的随机数的计算方法与代码

1 随机数的问题 用 C# Random 类生成的随机数是平均分布的。也就是各数据段的出现的次数差不多。彩票号码属于这种随机数。 而很多很多常见的随机数&#xff0c;比如&#xff1a;成绩&#xff0c;却是符合正态分布的。 因而很多时候需要生成符合正态分布规律的随机数。 2 文…

ROS2-IRON Ubuntu-22.0 源码下载失败解决方法 vcs import --input

ROS2 一.ROS2 IRON环境搭建1.设置系统字符集为UTF-82.将RO2 apt 库添加到系统中3.添加ROS2 GPG key4.添加ROS 2 的软件源安装开发工具 二.下载ROS2sh源代码编译 一.ROS2 IRON环境搭建 虚拟机系统&#xff1a;Ubuntu22.04 虚拟机&#xff1a;VMware-player-full-16.2.5-2090451…

LeetCode刷题笔记【26】:贪心算法专题-4(柠檬水找零、根据身高重建队列、用最少数量的箭引爆气球)

文章目录 前置知识860.柠檬水找零题目描述解题思路代码 406.根据身高重建队列题目描述解题思路代码 452. 用最少数量的箭引爆气球题目描述踩坑-进行模拟正确思路的贪心 总结 前置知识 参考前文 参考文章&#xff1a; LeetCode刷题笔记【23】&#xff1a;贪心算法专题-1&#x…

OpenCV之形态学操作

形态学操作包含以下操作&#xff1a; 腐蚀 (Erosion)膨胀 (Dilation)开运算 (Opening)闭运算 (Closing)形态梯度 (Morphological Gradient)顶帽 (Top Hat)黑帽(Black Hat) 其中腐蚀和膨胀操作是最基本的操作&#xff0c;其他操作由这两个操作变换而来。 腐蚀 用一个结构元素…

YOLO目标检测——密集人群人头数据集+已标注yolo格式标签下载分享

实际项目应用&#xff1a;城市安防、交通管理、社会研究、商业应用、等多个领域数据集说明&#xff1a;YOLO密集人群人头目标检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富&#xff0c;图片格式为jpg&#xff0c;共4300张图片。标注说明&#xff1a…

vue3详解

认识Vue3 1. Vue2 选项式 API vs Vue3 组合式API <script> export default {data(){return {count:0}},methods:{addCount(){this.count}} } </script> <script setup> import { ref } from vue const count ref(0) const addCount ()> count.value …

区块链技术与应用 - 学习笔记2【密码学基础】

大家好&#xff0c;我是比特桃。本系列笔记只专注于探讨研究区块链技术原理&#xff0c;不做其他违反相关规定的讨论。 区块链技术已被纳入国家十四五规划&#xff0c;在“加快数字发展 建设数字中国”篇章中&#xff0c;区块链被列为“十四五”七大数字经济重点产业之一&#…

kafka-- 安装kafka manager及简单使用

一 、安装kafka manager 管控台&#xff1a; # 安装kafka manager 管控台&#xff1a; ## 上传 cd /usr/local/software ## 解压 unzip kafka-manager-2.0.0.2.zip -d /usr/local/ cd /usr/local/kafka-manager-2.0.0.2/conf vim /usr/local/kafka-manager-2.0.0.2/conf/appl…