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

南通网站排名服务北京百度快速排名

南通网站排名服务,北京百度快速排名,如何修改wordpress权限设置,开发公司进入黑名单后可以销售70. 爬楼梯 难度#xff1a;简单 题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢#xff1f; 示例 1#xff1a; 输入#xff1a;n 2 输出#xff1a;2 解释#xff1a;有两种方法可以爬到楼…70. 爬楼梯 难度简单 题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢 示例 1 输入n 2 输出2 解释有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. 2 阶示例 2 输入n 3 输出3 解释有三种方法可以爬到楼顶。 1. 1 阶 1 阶 1 阶 2. 1 阶 2 阶 3. 2 阶 1 阶提示 1 n 45 个人题解 方法一打表递归优化记忆化递归 思路 分析题目可知首先一定有一种方法就是全是 1。然后逐个将 1 变成 2 插入长度减少 1 的队列中用数学知识可知即从 n-1 中挑 1个 1 变成 2然后下一种即从 n - 2 个 1 中挑 两个 变成 2 。。。依次类推直到全是 2 或者 只有 1 个 1 为止。打表将上述各个结果推出可得当n1,2,3,4,5,6,7,8 时应返回 1,2,3,5,8,13,21,34观察结果规律可得f(n) f(n - 1) f(n -2)则可写出下列代码 class Solution {public int climbStairs(int n) {if (n 1 || n 2) {return n;}return climbStairs(n - 2) climbStairs(n - 1);} }优化上述代码在 n 越大的时候会重复计算这时可以增加一个容器保存已计算的结果则已计算的结果可以直接返回无需重复计算 class Solution {// 也可以是容量45的数组private static final MapInteger, Integer map new HashMap();public int climbStairs(int n) {if (n 1 || n 2) {return n;}if (!map.containsKey(n)) {map.put(n, climbStairs(n - 2) climbStairs(n - 1));}return map.get(n);} }时间复杂度O(n) 空间复杂度O(n) 官方题解 方法一动态规划 我们用 f(x) 表示爬到第 x 级台阶的方案数考虑最后一步可能跨了一级台阶也可能跨了两级台阶所以我们可以列出如下式子 f(x)f(x−1)f(x−2) 它意味着爬到第 x 级台阶的方案数是爬到第 x−1 级台阶的方案数和爬到第 x−2 级台阶的方案数的和。很好理解因为每次只能爬 1 级或 2 级所以 f(x) 只能从 f(x−1)和 f(x−2)转移过来而这里要统计方案总数我们就需要对这两项的贡献求和。 以上是动态规划的转移方程下面我们来讨论边界条件。我们是从第 0 级开始爬的所以从第 0 级爬到第 0 级我们可以看作只有一种方案即 f(0)1从第 0 级到第 1 级也只有一种方案即爬一级f(1)1。这两个作为边界条件就可以继续向后推导出第 n 级的正确结果。我们不妨写几项来验证一下根据转移方程得到 f(2)2f(3)3f(4)5……我们把这些情况都枚举出来发现计算的结果是正确的。 我们不难通过转移方程和边界条件给出一个时间复杂度和空间复杂度都是 O(n) 的实现但是由于这里的 f(x) 只和 f(x−1)与 f(x−2) 有关所以我们可以用「滚动数组思想」把空间复杂度优化成 O(1)。 class Solution {public int climbStairs(int n) {int p 0, q 0, r 1;for (int i 1; i n; i) {p q; q r; r p q;}return r;} }复杂度分析 时间复杂度O(n) 空间复杂度O(1) 方法二矩阵快速幂 public class Solution {public int climbStairs(int n) {int[][] q {{1, 1}, {1, 0}};int[][] res pow(q, n);return res[0][0];}public int[][] pow(int[][] a, int n) {int[][] ret {{1, 0}, {0, 1}};while (n 0) {if ((n 1) 1) {ret multiply(ret, a);}n 1;a multiply(a, a);}return ret;}public int[][] multiply(int[][] a, int[][] b) {int[][] c new int[2][2];for (int i 0; i 2; i) {for (int j 0; j 2; j) {c[i][j] a[i][0] * b[0][j] a[i][1] * b[1][j];}}return c;} }复杂度分析 时间复杂度O(logn) 空间复杂度O(1) 方法三通项公式 public class Solution {public int climbStairs(int n) {double sqrt5 Math.sqrt(5);double fibn Math.pow((1 sqrt5) / 2, n 1) - Math.pow((1 - sqrt5) / 2, n 1);return (int) Math.round(fibn / sqrt5);} }作者力扣官方题解 链接https://leetcode.cn/problems/climbing-stairs/solutions/286022/pa-lou-ti-by-leetcode-solution/ 来源力扣LeetCode 著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。
http://www.yutouwan.com/news/68060/

相关文章:

  • 湖北建设执业资格注册中心网站做旅游的网站有哪些
  • 网站开发研究背景傻瓜式建设网站的软件
  • 自助游网站开发分析报告做视频网站要什么软件
  • 做二手房怎找房源网站nginx 防御 wordpress 攻击
  • wordpress怎么开启多站点电商公司的网上设计
  • 手机适配网站百度推广投诉电话
  • 烟台中企动力提供网站建设宜春个人网站建设
  • 莆田网站制作企业面向搜索引擎网站建设
  • 耐克1网站建设的总体目标网站备案 视频
  • 学网站建设与管理有用吗营销型网站建设专家
  • 网站关键词排名seo网站服务器租用报价
  • 建立网站的原因百度ai营销中国行
  • python做网站好吗怎么注册自媒体号挣钱
  • 自己创建网站403wordpress插件授权破解版
  • 深圳网站建设机构长春网站建设方案报价
  • 北京怀柔网站制作如何制作小程序赚钱
  • 做问卷用哪个网站长春市长春网站制作站优化
  • 网站怎么做会被收录企业网站模板下载需谨慎
  • 视频网站的建设目标wordpress 视频
  • dedecms购物网站html怎么做网站后台
  • 云南网站建设肖庆华wordpress 搬家 换域名
  • 网站建设费用包括怎么让关键词快速上首页
  • 廊坊网站建设代理注册公司怎么样
  • 福建网站开发速成班输入关键词搜索
  • 个人网站注册平台钱怎么建立一个公司网站
  • 买了个域名怎么做网站西安医疗网站制作
  • 网站运营者大连微信网站建设
  • 网络管理中心网站企业网站建设方案书模板
  • 如何制作网站的横幅预约网免费建站流程
  • 中小型网站建设多少钱发布网站建设信息