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

代码随想录算法训练营第23期day45|70. 爬楼梯 (进阶)、322. 零钱兑换、279.完全平方数

目录

一、(leetcode 70)爬楼梯

二、(leetcode 322)零钱兑换

三、(leetcode 279)完全平方数


一、(leetcode 70)爬楼梯

力扣题目链接​​​​​​

状态:查看思路后AC

除了常规的可以爬一或二级台阶,当题目稍微修改一下,变成可以爬m级台阶,之前的DP思路就有局限(dp[i] = dp[i-1] + dp[i-2),为了通杀这类问题,可以将题目转换为完全背包问题,可以爬的楼梯级数就是背包中的物品,楼梯总数就是背包,注意例如五级台阶1,2,2和2,2,1是不同的方法,所以类比昨天的组合总数问题,需要先遍历背包,再遍历物品、

class Solution {
public:int climbStairs(int n) {// 转换为完全背包问题vector<int> dp(n+1, 0);dp[0] = 1;for(int i = 1; i <= n; ++i){ // 先背包for(int j = 1; j <= 2; ++j){ // 后物品(可以爬的台阶数,题目中是2)if(i-j >= 0) dp[i] += dp[i-j];}}return dp[n];}
};

二、(leetcode 322)零钱兑换

力扣题目链接

状态:查看思路Debug后AC。

class Solution {
public:int coinChange(vector<int>& coins, int amount) {vector<int> dp(amount+1, INT_MAX);dp[0] = 0;int len = coins.size();for(int i = 0; i < len; ++i){for(int j = coins[i]; j <= amount; ++j){if(dp[j - coins[i]] != INT_MAX){dp[j] = min(dp[j], dp[j-coins[i]]+1);}}}if(dp[amount] == INT_MAX) return -1;return dp[amount];}
};

三、(leetcode 279)完全平方数

力扣题目链接

状态:查看思路Debug后AC。

注意转换为完全背包后的先物品再背包和先背包再物品的遍历方式在实现上的细节问题,这里将两种代码都放上。

先物品,再背包:

class Solution {
public:int numSquares(int n) {// 完全平方数就是物品,总和就是背包,转换成一个无重复组合的完全背包问题vector<int> dp(n+1, INT_MAX);dp[0] = 0;for(int i = 1; i*i <= n; ++i){// 先物品for(int j = i*i; j <= n; ++j){dp[j] = min(dp[j], dp[j - i*i]+1);}}return dp[n];}
};

先背包,再物品:

class Solution {
public:int numSquares(int n) {// 完全平方数就是物品,总和就是背包,转换成一个无重复组合的完全背包问题vector<int> dp(n+1, INT_MAX);dp[0] = 0;for(int i = 0; i <= n; ++i){// 先背包for(int j = 1; j*j <= i; ++j){if(dp[i - j*j] != INT_MAX){dp[i] = min(dp[i], dp[i - j*j]+1);}}}return dp[n];

http://www.lryc.cn/news/227972.html

相关文章:

  • uniapp公共css
  • C语言—i++、++i、条件运算符、goto语句、注释
  • Java自学第8课:电商项目(3) - 重新搭建环境
  • 深度学习_11_softmax_图片识别代码原理解析
  • Java Web——前端HTML入门
  • 华为ensp:为vlan配置ip
  • laravel8-rabbitmq消息队列-实时监听跨服务器消息
  • git清除历史提交记录保持本地文件不变
  • SOME/IP学习笔记2
  • python实现FINS协议的TCP服务端(篇一)
  • 利用uni-app 开发的iOS app 发布到App Store全流程
  • 5个高质量的实用办公软件,每一款都是良心推荐
  • 基于GPTs个性化定制SCI论文专业翻译器
  • Final Cut Pro X for Mac:打造专业级视频剪辑的终极利器
  • c++分割路径的字符串,得到 目录 文件名 扩展名
  • ABAP OpenSQL 分页处理
  • kubeasz一键部署k8s集群
  • 高性能图表库LightningChart JS v5.0 - 轻松实现图表自定义布局
  • 深度学习的集体智慧:最新发展综述
  • Java之“数字困境”:资产管理项目中的Bug追踪与启示
  • 小程序微信登录授权突然没反应的原因和解决方案
  • 文本提交时如何使用PHP替换回车为br
  • 安全框架SpringSecurity-1(认证入门数据库授权)
  • 【MybatisPlus】条件构造器、自定义SQL、Service接口
  • 数组计算广播
  • 代码解读:Zero-shot 视频生成任务 Text2Video-Zero
  • hub.docker访问不了的问题(一步解决)
  • [.NET] Speex 语音编解码介绍, 使用, 代码示例
  • 小样本目标检测(Few-Shot Object Detection)综述
  • 【解决问题】---- 解决 avue-crud 表格勾选数据翻页后界面保持选中