【动态规划part07】| 70.爬楼梯(进阶)、322.零钱兑换、完全平方数

news2025/1/17 1:07:06

目录

🎈LeetCode70. 爬楼梯 (进阶)

🎈LeetCode322. 零钱兑换 

🎈LeetCode279.完全平方数


🎈LeetCode70. 爬楼梯 (进阶)

链接:70.爬楼梯进阶

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

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

 

之前是用斐波那契数列解决的,其实也可以用完全背包的思路,物品是1或2,背包就是楼顶 

public int climbStairs(int n) {
        // 完全背包思路
        // dp[j]表示爬n阶台阶需要dp[j]种方法
        int[] dp=new int[n+1];
        int[] nums={1,2};
        // dp[j]+=dp[j-nums[i]];
        dp[0]=1;
        for(int j=1;j<=n;j++){
            for(int i=0;i<nums.length;i++){
                if(j>=nums[i]){
                    dp[j]+=dp[j-nums[i]];
                }    
            }
        }
        return dp[n];
    }

🎈LeetCode322. 零钱兑换 

链接:322.零钱兑换

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

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

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

public int coinChange(int[] coins, int amount) {
        // 完全背包
        // dp[j]表示凑成j的最少硬币个数
        int[] dp=new int[amount+1];
        // dp[j]=Math.min(dp[j-1]+1,dp[j-1])
        for(int i=0;i<dp.length;i++){
            dp[i]=Integer.MAX_VALUE;
        }
        dp[0]=0;
        for(int j=1;j<=amount;j++){
            for(int i=0;i<coins.length;i++){
                if( j>=coins[i] && dp[j-coins[i]]!=Integer.MAX_VALUE ){
                    dp[j]=Math.min(dp[j-coins[i]]+1,dp[j]);
                }
                
            }
        }
        if(dp[amount]==Integer.MAX_VALUE){
            return -1;
        }
        return dp[amount];
    }

🎈LeetCode279.完全平方数

链接:279.完全平方数

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

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

public int numSquares(int n) {
        // 完全背包
        // dp[j]表示和为j的完全平方数的最小数量为dp[j]
        int[] dp=new int[n+1];
        // dp[j]=Math.min(dp[j-nums[i]],dp[j])
        for(int i=0;i<dp.length;i++){
            dp[i]=Integer.MAX_VALUE;
        }
        dp[0]=0;
        for(int j=1;j<=n;j++){
            for(int i=1;i*i<=j;i++){
                dp[j]=Math.min(dp[j-i*i]+1,dp[j]);   
            }
        }
        return dp[n];
    }

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

官网HID描述符工具

USB规范官网提供了一个HID报告描述符生成工具&#xff0c;HID Descriptor Tool | USB-IF 使用我们此工具&#xff0c;我们可以&#xff1a; 创建、编辑和验证HID报告描述符。输出多种输出&#xff08;.txt、.inc、.h等&#xff09;查看一些标准的设备报告描述符示例。 该工具…

【NVMe2.0d 17 - 1】Reservation 介绍

文章目录 关键词概述Reservation 类型Reservation NotificationsSet Features Reservation Notification Mask (Feature Identifier 82h)Set Features Reservation Persistence (Feature Identifier 83h) 关键词 Reservation: Reservation Host:主机 Namespace:命名空间 NVM S…

C++ 核心编程

一、 内存分区模型 C程序在执行时&#xff0c;将内存大方向划分为4个区域 代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统进行管理 全局区&#xff1a;存放全局变量和静态变量以及常量 栈区&#xff1a;由编译器自动分配释放&#xff0c;存放函数的参数值、…

小程序如何将商品添加到分类

​将商品添加到分类是非常重要的功能&#xff0c;可以让商家更方便地管理分类和商品。下面将具体介绍如何将产品添加到分类中。 步骤一&#xff1a;选中商品 在个人中心点击管理入口&#xff0c;然后找到“商品管理”菜单并点击。找到需要添加的商品&#xff0c;然后选中它。…

初识C++——关键字,输入输出,函数名修饰,引用

文章目录 C的常用关键字C的输入输出C支持重载的原理------名字修饰windows下的名字修饰规则 引用引用的概念引用的特点使用场景做参数 做返回值常引用 C的常用关键字 C的常用关键字一共有63个&#xff0c;其中包括有C语言的关键字&#xff0c;这些关键字我们在后面的文章中都会…

如何高效实现文件传输:小文件采用零拷贝、大文件采用异步io+直接io

一般会如何实现文件传输&#xff1f; 服务器提供文件传输功能&#xff0c;需要将磁盘上的文件读取出来&#xff0c;通过网络协议发送到客户端。如果需要你自己编码实现这个文件传输功能&#xff0c;你会怎么实现呢&#xff1f; 通常&#xff0c;你会选择最直接的方法&#xf…

嵌入式学习_Day 003

程序功能介绍 c #include <stdio.h> int main() {char c,ll;printf("please enter a capital letter:");cgetchar();getchar();if (c>A&& c<Z) {llc32;printf("Lowercase letter output:%c\n",ll);printf("ASCII value:%d\n"…

阿含经人物传记知识图谱与问答系统设计20230725(进行中)

基本思路—— 1 数据提取 以《房山石经》阿含经为核心&#xff0c;提取经文索引、内容、关键词等数据&#xff0c;构成excel数据&#xff1b; 2 数据清洗 从数据库中重新建构角色画像数据&#xff0c;形成佛、辟支佛、尊者、比丘、比丘尼……等各类人物数据 3 数据映射&…

缠论线段的划分

第一种情况&#xff1a; 第二种情况&#xff1a; 第二种情况中的特例&#xff1a; 第二种情况的特例&#xff1a; 顶分型成立&#xff1a; 向上线段延续&#xff1a; 顶分型后面底分型&#xff0c;形成三段 插入一个分型的反面例子&#xff1a; dd

软件测试外包公司怎么选?CMA/CNAS软件测试报告的优势

在当前信息化和全球化的背景下&#xff0c;软件测试外包公司是很多企业选择的一种方式。因为软件测试外包公司具备丰富的专业能力和经验&#xff0c;能够提供高质量的测试服务。同时&#xff0c;外包公司可以根据客户需求灵活组织测试团队&#xff0c;并且能够及时响应和处理问…

微信怎么批量删除好友?

今天我们来说说微信怎么批量删除好友。 为什么会想要说这个呢&#xff0c;原因是我有一个朋友离职后发朋友圈求助说离职后怎么把前同事们都删除。在日常使用微信中&#xff0c;相信也有些朋友对于一些毫不相关的好友想要删除掉。 一般的做法都是一个一个删除&#xff0c;但很繁…

上位机软件wincc通过工业网关采集plc数据实现组态监控

WinCC是一个组态软件&#xff0c;可以用于数据采集与监控、自动化控制、工业物联网等领域。WinCC可以帮助用户实现工厂自动化和过程自动化的解决方案&#xff0c;提供可视化的监控界面和数据采集分析功能&#xff0c;支持多种协议和设备&#xff0c;如Siemens、Modbus、OPC等。…

数据库应用:Redis持久化

目录 一、理论 1.Redis 高可用 2.Redis持久化 3.RDB持久化 4.AOF持久化&#xff08;支持秒级写入&#xff09; 5.RDB和AOF的优缺点 6.RDB和AOF对比 7.Redis性能管理 8.Redis的优化 二、实验 1.RDB持久化 2.AOF持久化 3.Redis性能管理 4.Redis的优化 三、总结 一、…

C# 数据结构】Heap 堆

【C# 数据结构】Heap 堆 先看看C#中有那些常用的结构堆的介绍完全二叉树最大堆 Heap对类进行排序实现 IComparable<T> 接口 对CompareTo的一点解释 参考资料 先看看C#中有那些常用的结构 作为 数据结构系类文章 的开篇文章&#xff0c;我们先了解一下C# 有哪些常用的数据…

进入元宇宙,半岛体育打开新世界大门

上赛季西甲联赛在新赛季开启之际,宣布与科技公司Stadio Plus合作,计划在元宇宙平台Decentraland的Vegas City打造西甲主题地块,与Z世代球迷更好地互动,这进一步推高了外界对于“体育元宇宙”的关注。伴随着AR/VR、云计算、AI等技术的日益成熟,叠加后疫情因素的影响,从源头的训练…

K8S:容器日志收集与管理

Kubernetes 里面对容器日志的处理方式&#xff0c;都叫作 cluster-level-logging&#xff0c;即&#xff1a;这个日志处理系统&#xff0c;与容器、Pod 以及 Node 的生命周期都是完全无关的。这种设计当然是为了保证&#xff0c;无论是容器挂了、Pod 被删除&#xff0c;甚至节点…

Linux_CentOS_7.9部署Docker以及镜像加速配置等实操验证全过程手册

前言&#xff1a;实操之前大家应该熟悉一个新的名词DevOps 俗称开发即运维、新一代开发工程师&#xff08;Development和Operations的组合词&#xff09;是一组过程、方法与系统的统称&#xff0c;用于促进开发&#xff08;应用程序/软件工程&#xff09;、技术运营和质量保障&…

【*1800树上贪心】CF1401 D

Problem - D - Codeforces 题意&#xff1a; 思路&#xff1a; 首先&#xff0c;1尽可能少&#xff0c;那就是让pi尽可能不合并地摊到所有边上&#xff0c;然后计算贡献 按照CF惯用套路&#xff0c;这样的n^2贡献肯定是更换枚举对象&#xff0c;我们去枚举边&#xff0c;按边…

Docker consul 的容器服务更新与发现

目录 一、Consul 简介 1.什么是服务注册与发现 2. 什么是consul 3.consul 架构 二、部署 consul 服务器&#xff08;192.168.88.10&#xff09; 1.建立 Consul 服务 2.查看集群信息 3.通过 http api 获取集群信息 三、registrator服务器&#xff08;192.168.88.60&…

Gnomon水下环境 下

不会全下去 鱼群 方向反了&#xff0c;位置不对 不动了 速度快&#xff0c;一个条 数量太多 太卡 使用的弧线没问题 &#xff0c;这块我有点晕 水泡制作 运动严重 减少晃动 turbulenceField1.phaseZ time*20; 总结 使用晶格调节大概样子,变成柔体 particleShape1.daxiaorand(…