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

代码随想录训练营二刷第四十七天 | 70. 爬楼梯 (进阶) 322. 零钱兑换 279.完全平方数

代码随想录训练营二刷第四十七天 | 70. 爬楼梯 (进阶) 322. 零钱兑换 279.完全平方数

一、70. 爬楼梯 (进阶)

题目链接:https://leetcode.cn/problems/climbing-stairs/
思路:物品是楼梯1和2,背包是n求排列数,背包在外物品在内,递推公式dp[i] += dp[i - j]

class Solution {public int climbStairs(int n) {int[] dp = new int[n+1];dp[0] = 1;for (int i = 0; i <= n; i++) {for (int j = 1; j <= 2; j++) {if (j <= i) {dp[i] += dp[i - j];}}}return dp[n];}
}

二、322. 零钱兑换

题目链接:https://leetcode.cn/problems/coin-change/
思路:求所需物品的最少数量,完全背包,定义dp[i]表示背包容量为i时所需物品的最少数量,递推公式dp[i] = dp[i-j] + 1。自然等于放这个物品的前一个位置加1。如dp[5] = dp[5 - 1] + 1 或者 dp [5 - 2] + 1等等,一定得是这些当中最少的那个。故dp[j] = Math.min(dp[j], dp[j-coins[i]] + 1)。最少数量无关排列或者组合。初始化为最大值,dp[0]=0,另外必须得是dp[j-coins[i]] != max时才能进行递推,如果dp[j-coins[i]] == max说明前一个数就没用,现在当前不能在没使用的基础上进行递推。

class Solution {public int coinChange(int[] coins, int amount) {int[] dp = new int[amount+1];int max = Integer.MAX_VALUE;for (int i = 1; i < dp.length; i++) {dp[i] = max;}for (int i = 0; i < coins.length; i++) {for (int j = coins[i]; j <= amount; j++) {if (dp[j-coins[i]] != max) {dp[j] = Math.min(dp[j], dp[j-coins[i]] + 1);}}}return dp[amount] == max ? -1 : dp[amount];}
}

三、279.完全平方数

题目链接:https://leetcode.cn/problems/perfect-squares/
思路:和上题基本一样,细节在于完全平方数为i*i

class Solution {public int numSquares(int n) {int[] dp = new int[n+1];int max = Integer.MAX_VALUE;for (int i = 1; i < dp.length; i++) {dp[i] = max;}for (int i = 1; i*i <= n; i++) {for (int j = i*i; j <= n; j++) {dp[j] = Math.min(dp[j], dp[j - i*i] + 1);}}return dp[n];}
}
http://www.lryc.cn/news/183161.html

相关文章:

  • beego-简单项目写法--后续放到git上
  • 【算法|动态规划No.9】leetcodeLCR 091. 粉刷房子
  • 基于SpringBoot的图书进销存管理系统
  • 回归预测 | MATLAB实现PSO-SVR粒子群优化支持向量机回归多输入单输出预测
  • vue3使用v-model控制子组件进行双向数据绑定
  • .netCore .net5,6,7 存日志文件
  • 【数据结构---排序】很详细的哦
  • GitHub爬虫项目详解
  • 辅助驾驶功能开发-功能对标篇(7)-NOA领航辅助系统-上汽荣威
  • 第0次 序言
  • ESP32设备驱动-OLED显示单个或多个DS18B20传感器数据
  • MongoDB快速上手
  • maven 初学
  • 解决WPF+Avalonia在openKylin系统下默认字体问题
  • 智能合约漏洞,Dyna 事件分析
  • Elasticsearch基础篇(四):Elasticsearch7.x的官方文档学习(Set up Elasticsearch)
  • 二叉树的遍历方式和代码
  • 小样本学习——匹配网络
  • CSS 常用样式 之字体属性
  • nodejs+vue游戏测评交流系统elementui
  • 1.2.OpenCV技能树--第一单元--OpenCV安装
  • 全志ARM926 Melis2.0系统的开发指引⑥
  • Junit单元测试为什么不能有返回值?
  • 【成像光敏描记图提取和处理】成像-光电容积描记-提取-脉搏率-估计(Matlab代码实现)
  • Ubuntu无法引导启动的修复
  • Windows电脑上的多开软件是否安全?
  • U盘支持启动区+文件存储区的分区方法
  • JavaEE-线程进阶
  • 【开发篇】十五、Spring Task实现定时任务
  • Python常用功能的标准代码