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

代码随想录第四十五天

代码随想录第四十五天

    • Leetcode 70. 爬楼梯
    • Leetcode 322. 零钱兑换
    • Leetcode 279. 完全平方数

Leetcode 70. 爬楼梯

题目链接: 爬楼梯
自己的思路:之前是用斐波那契做的,但是现在学了完全背包,可以将m=2拓展的更大一点,我们可以将楼顶n设为背包的容量,将m设为物品的容量,我们每次选物品,而且物品可以重复,问可以有多少种不同的选法,而且这种是要考虑顺序的问题的,所以和之前的组合总和其实是一个题目!!!!!

正确思路:

代码:

class Solution {public int climbStairs(int n) {//物品的数量int m=2;int[] dp= new int[n+1];dp[0] = 1;for (int j=0;j<=n;j++){  //遍历背包for (int i=1;i<=m;i++){  //遍历物品if (j>=i) dp[j]+=dp[j-i];}}return dp[n];}
}

Leetcode 322. 零钱兑换

题目链接: 零钱兑换
自己的思路:想不到!!!!

正确思路:这个题可以看做是一个完全背包问题,因为里面的钱是可以任意取重复个的!动规五部曲:1、dp数组的含义:dp[j]表示的是当总金额为j时组成总金额的钱币的最小数量!2、递推公式:我们拿当第i个钱币来算,如果我们不选这个钱币,那么就是dp[j]情况,那么如果选的话就是dp[j-coins[i]]+1,所以说取两者的最小值;3、dp数组初始化:dp[0]肯定是0,主要是其他的我们要初始化为什么,因为我们是求min值,所以我们应该将他们都初始化为Integer的最大值;4、遍历顺序:由于这道题是求最小的数量,所以先遍历背包和先遍历物品其实是一样的;5、打印dp数组:主要是用于debug!!!

代码:

class Solution {public int coinChange(int[] coins, int amount) {int[] dp = new int[amount+1];for (int i =0;i<dp.length;i++){dp[i] = Integer.MAX_VALUE;}dp[0] = 0;for (int i=0;i<coins.length;i++){for (int j=coins[i];j<=amount;j++) {//当dp[m]有效的时候,才可以向后更新,不然没有意义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];}
}

Leetcode 279. 完全平方数

题目链接: 完全平方数
自己的思路:和上一个题基本一样,怪自己懒得思考!!!!

正确思路:只是改变了一下循环中的参数的定义,其他基本都是不变的,这个题一定可以由完全平方数组成,所以我们初始化的时候非零的索引初始化为n,因为dp[n]最大是n!!!
代码:

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

相关文章:

  • Vue Baidu Map--自定义点图标bm-marker
  • ZooKeeper的基本概念
  • SpringBoot复习:(51)默认情况下DataSource是怎么创建出来的,是什么类型的?
  • Python+Selenium自动化测试环境搭建步骤(selenium环境搭建)
  • 实现简单纯Canvas文本输入框,新手适用
  • React构建的JS优化思路
  • vim键盘图
  • 【实战】十一、看板页面及任务组页面开发(一) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(二十三)
  • 深入源码分析kubernetes informer机制(三)Resync
  • FL Studio 21最新for Windows-21.1.0.3267中文解锁版安装激活教程及更新日志
  • HTML详解连载(4)
  • STM32 LL库+STM32CubeMX--点亮板载LED
  • 【HBZ分享】ES的评分score机制的原理
  • 函数递归专题(案例超详解一篇讲通透)
  • leetcode-413. 等差数列划分(java)
  • 从零开始学习 Java:简单易懂的入门指南之MAth、System(十二)
  • 人工智能原理概述 - ChatGPT 背后的故事
  • 【Linux】以太网协议——数据链路层
  • Neo4j之MATCH基础
  • Python实验代码合集
  • Less和Sass的原理和用法
  • c# List<T>.Aggregate
  • 软件测试常用工具总结(测试管理、单元测试、接口测试、自动化测试、性能测试、负载测试等)
  • Hadoop组件
  • jeecg-boot批量导入问题注意事项
  • Django图书商城系统实战开发 - 实现会员管理
  • Kafka如何解决消息丢失的问题
  • 我只记得512天在CSDN的日子
  • pycharm,VSCode 几个好用的插件
  • springboot 使用zookeeper实现分布式ID