当前位置: 首页 > news >正文

算法刷题|70.爬楼梯(进阶)、322.零钱兑换、279.完全平方数

爬楼梯(进阶)

题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

思路:本题也可以抽象成完全背包的问题,背包就是总共多少阶台阶,物品就是每次可以爬多少楼梯,可以爬1阶也可以爬2阶,和顺序有关系,所有是完全背包

  • dp[i]的含义:爬i阶楼梯,总共有dp[i]种方法
  • 递推公式:dp[i] += dp[i-j]
  • dp初始化:dp[0] = 1
  • 遍历顺序:先遍历背包,后遍历物品
  • 打印dp数组
class Solution {public int climbStairs(int n) {// dp[i]表示:爬i阶台阶有dp[i]中方式int[] dp = new int[n+1];// 初始化dp[0] = 1;int[] weigth = {1,2};for(int i = 0;i<=n;i++){// 背包for(int j = 0;j<weigth.length;j++){// 物品if(i >= weigth[j]){dp[i] += dp[i-weigth[j]];}}}return dp[n];}
}

零钱兑换

题目:给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。

计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。

你可以认为每种硬币的数量是无限的。

  • dp[j]的含义:凑成金额为j,最少需要dp[j]个硬币
  • 递推公式:dp[j] = Math.min(dp[j],dp[j-coins[i]]+1)
    • dp[j]不放当前硬币,因为是一维数组,所有这里用的是上一次遍历的结果
    • dp[j-coins[i]]+1,放当前硬币;放了当前硬币,剩余的金额的最少硬币数+1(当前这个硬币)就是放当前硬币的最少硬币数
  • dp数组初始化:dp[j] = Integer_MAX_VALUE,dp[0] = 0,因为取的是最小值,所有就不能全部初始化成0了,因为dp[0] = 0,所有就会一种都是0
  • 遍历顺序:先遍历物品,后遍历背包
  • 打印dp数组
class Solution {public int coinChange(int[] coins, int amount) {// dp[i]表示:凑成金额为i,最少需要dp[i]个硬币int[] dp = new int[amount+1];Arrays.fill(dp,Integer.MAX_VALUE);dp[0] = 0;for(int i = 0;i<coins.length;i++){// 物品for(int j = coins[i];j<=amount;j++){// 背包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];}
}

完全平方数

题目:给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。

完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。

思路:本题的物品就是1,4,9,16…等等完全平方数,背包就是n

  • dp[i]的含义:dp[i]个完全平方数和为i
  • 递推公式:dp[i] = Math.min(dp[i],dp[i-i*i]+1)
  • dp数组初始化:dp[i]=Integer.MAX_VALUE,dp[0]=0
  • 遍历顺序:先物品,后背包
  • 打印dp数组
class Solution {public int numSquares(int n) {// dp[i]表示整数i,dp[i]个完全平方数和为iint[] dp = new int[n+1];Arrays.fill(dp,Integer.MAX_VALUE);dp[0] = 0;for(int i = 1;i*i<=n;i++){// 物品for(int j = i*i;j<=n;j++){// 背包if(dp[j-i*i] != Integer.MAX_VALUE){dp[j] = Math.min(dp[j],dp[j-i*i]+1);}}}return dp[n] == Integer.MAX_VALUE ? -1 : dp[n];}
}

相关文章:

算法刷题|70.爬楼梯(进阶)、322.零钱兑换、279.完全平方数

爬楼梯&#xff08;进阶&#xff09; 题目&#xff1a;假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 思路&#xff1a;本题也可以抽象成完全背包的问题&#xff0c;背包就是总共多少阶台阶&am…...

【MCS-51】51单片机结构原理

至今为止&#xff0c;MCS-51系列单片机有许多种型号的产品&#xff1a;其中又分为普通型51&#xff08;8031、8051、89S51&#xff09;和增强型52&#xff08;8032、8052、89S52等&#xff09;。它们最大的区别在于存储器配置各有差异。下面我举例子的都是8051这一系列的单片机…...

软件测试技术之如何编写测试用例(3)

14、对于类似于手机版淘宝这种软件&#xff0c;它拥有客户端&#xff0c;服务器端还有一个后台管理系统类似于进销存管理系统&#xff0c;我如何设计测试用例才能保证功能的完全覆盖&#xff1f;他们之间的交互如何设计测试用例&#xff1f; 专家分析&#xff1a;对于复合型的…...

移远通信笔试题

限时60分钟 1.下列关于栈叙述正确的是 A A) 栈顶元素最先能被删除 B&#xff09;栈顶元素最后才能被删除 C&#xff09;栈底元素永远不能被删除 D&#xff09;以上三种都不对 在栈中&#xff0c;最后被压入的元素总是在栈顶上方&#xff0c;而栈顶元素总是最先被弹出的元…...

python算法中的机器学习算法之监督学习知识点(详解)

目录 学习目标: 学习内容: Ⅰ. 线性回归(Linear Regression) Ⅱ. 逻辑回归(Logistic Regression)...

Flink主要有两种基础类型的状态:keyed state

Flink主要有两种基础类型的状态&#xff1a;keyed state 和operator state。 Keyed State Keyed State总是和keys相关&#xff0c;并且只能用于KeyedStream上的函数和操作。 你可以将Keyed State视为是已经被分片或分区的Operator State&#xff0c;每个key都有且仅有一个状态分…...

js录音支持h5 pc ios android

最近在做h5录音的页面要求可暂停录音,继续录音&#xff0c;写好后发现不兼容ios,无奈只能找兼容方法&#xff0c;找了一天也没找到&#xff0c;后来看到一个网站在ios上可以暂停录音&#xff0c;后来引入他的js文件果然能用了 网站放下面了 Recorder H5: 用于html5网页中的前…...

mybatis04-mybatis缓存、分页插件、注解开发(一对一、多对一、多对多)

mybatis04 mybatis 缓存 一、mybatis 缓存概述 1、缓存 ​ 缓存 是存在于内存中的临时数据&#xff0c;使用缓存的目的是&#xff1a;减少和数据库的交互次数&#xff0c;提高执行效率。 2、mybatis 缓存 ​ mybatis 与 大多数的持久层框架一样&#xff0c;提供了缓存策略…...

软件平台接口常见问题汇总

接口常见问题汇总 一、接口技术层面 1、输入参数验证校验不全面。如&#xff1a; 1.1入参数据类型长度边界&#xff0c;范围边界。 1.2 入参数据内容、成员内容&#xff0c;有效无效&#xff0c;合法非法。 1.3 入参数据 特殊字符 敏感字符过滤。 1.4 入参可否必选。 2、接口…...

SparkStreaming学习之——无状态与有状态转化、遍历kafka的topic消息、WindowOperations

目录 一、状态转化 二、kafka topic A→SparkStreaming→kafka topic B (一)rdd.foreach与rdd.foreachPartition (二)案例实操1 1.需求&#xff1a; 2.代码实现&#xff1a; 3.运行结果 (三)案例实操2 1.需求&#xff1a; 2.代码实现&#xff1a; 3.运行结果 三、W…...

上市公司碳排放测算数据(1992-2022年)

根据《温室气体核算体系》&#xff0c;企业的碳排放可以分为三个范围。 范围一是直接温室气体排放&#xff0c;产生于企业拥有或控制的排放源&#xff0c;例如企业拥有或控制的锅炉、熔炉、车辆等产生的燃烧排放&#xff1b;拥有或控制的工艺设备进行化工生产所产生的排放。 范…...

Springboot 整合 JPA 及 Swagger2

首先是官方文档&#xff1a; Spring Data JPA - Reference Documentationhttps://docs.spring.io/spring-data/jpa/docs/2.2.4.RELEASE/reference/html/#repositories.query-methods 1、JPA相关概念 2、创建 Springboot 项目 修改 pom 文件&#xff0c;可以直接进行复制粘贴&a…...

android aidl

本文只是记录个人学习aidl的实现&#xff0c;如需学习请参考下面两篇教程 官方文档介绍Android 接口定义语言 (AIDL) | Android 开发者 | Android Developers 本文参考文档Android进阶——AIDL详解_android aidl_Yawn__的博客-CSDN博客 AIDL定义&#xff1a;Android 接口…...

MYSQL---主从同步概述与配置

一、MYSQL主从同步概述 1、什么是MySQL主从同步&#xff1f; 实现数据自动同步的服务结构 主服务器(master): 接受客户端访问连接 从服务器(slave)&#xff1a;自动同步主服务器数据 2、主从同步原理 Maste&#xff1a;启用binlog 日志 Slave&#xff1a;Slave_IO: 复制master主…...

WebClient学习

1. 介绍 Java中传统的RestTemplate 的主要问题在于不支持响应式流规范&#xff0c;也就无法提供非阻塞式的流式操作。而WebClient是响应式、非阻塞的客户端&#xff0c;属于Spring5中的spring-webflux库 2. 依赖 maven依赖 <dependency><groupId>org.springfra…...

「计算机控制系统」6. 直接设计法

特殊类型系统的最小拍无差设计 一般系统的最小拍无差设计 最小拍控制器的工程化改进 Dahlin算法 文章目录 特殊类型系统的最小拍无差设计理论分析典型输入函数的最小拍无差系统 一般系统的最小拍无差设计有波纹最小拍无差设计无波纹最小拍无差设计 最小拍控制器的工程化改进针对…...

什么是JWT?

起源 需要了解一门技术&#xff0c;首先从为什么产生开始说起是最好的。JWT 主要用于用户登录鉴权&#xff0c;所以我们从最传统的 session 认证开始说起。 session认证 众所周知&#xff0c;http 协议本身是无状态的协议&#xff0c;那就意味着当有用户向系统使用账户名称和…...

STM32—0.96寸OLED液晶显示

本文主要介绍基于STM32F103的0.96寸的OLED液晶显示&#xff0c;详细关于0.96寸OLED液晶屏幕的介绍可参考这篇博客&#xff1a;https://blog.csdn.net/u011816009/article/details/130119426 一、简介 OLED被称为有机激光二极管&#xff0c;也被称为有机激光显示&#xff0c;O…...

Mysql的简介和选择

文章目录 前言一、为什么要使用数据库 数据库的概念为什么要使用数据库二、程序员为什么要学习数据库三、数据库的选择 主流数据库简介使用MySQL的优势版本选择四、Windows 平台下安装与配置MySQL 启动MySQL 服务控制台登录MySQL命令五、Linux 平台下安装与配置MySQL总结 前言…...

3D视觉之深度相机方案

随着机器视觉&#xff0c;自动驾驶等颠覆性的技术逐步发展&#xff0c;采用 3D 相机进行物体识别&#xff0c;行为识别&#xff0c;场景 建模的相关应用越来越多&#xff0c;可以说 3D 相机就是终端和机器人的眼睛。 3D 相机 3D 相机又称之为深度相机&#xff0c;顾名思义&…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...