当前位置: 首页 > 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.huolong8.cn/news/68060/

相关文章:

  • 怎么选择徐州网站开发郑州网站建设企业
  • 人才网网站建设方案wordpress 资讯模板
  • 建站行业新闻网站公告栏模板
  • php做的卖水果网站涟源seo快速排名
  • 江苏省建设工程网站沈阳工程建设信息网站电气监理
  • 南通专业网站建设公司绿化面积 建设网站
  • 做网站用什么程序比较好怎么做网站的301
  • 烟台网站建设联系企汇互联专业sydney wordpress
  • 做预定网站的作用网页传奇游戏百度
  • 产品类网站模板网上做广告的网站
  • 杭州网站开发 网站建设郑州 网站开发
  • 深圳做门户网站的网络公司设计需求网站
  • 建立网站的关键是定位网站的运作流程
  • 网站推广营销策略网站开发安全模块方案
  • 长沙做网站价格苏州建设交通职业学校
  • 深圳西丽网站建设seo优化技术招聘
  • 网站怎么做切换中英文注册google账号
  • 建设网站公司管备案么聊城网站建设:推广聊城博达
  • 快速构建网站网站导航条模板
  • 沃航科技网站开发网站推广软文选天天软文
  • 天津企业网站模板建站哪家好政法网站内容建设
  • 海南网站推广建设韩国化妆品网站模板
  • 网站建设方案报价表外贸网站建设网站
  • 天津 做网站wap网站 教程
  • 哈尔滨市建设安全网站网站开发账务处理
  • 做网站资料准备什么企业营销策划ppt
  • 烟台网站建设网站注册城乡规划师
  • 佛山网络营销网站上海松江网站建设
  • 电子商务网站建设与管理的学后感建站平台哪个好
  • 小型项目外包网站百度热度