爬楼梯

分析:对于每一次向上走台阶一共两种可能,一个台阶或者两个台阶,因此则有递归:

f(3) = f(1) + f(2)
f(4) = f(2) + f(3)

f(n) = f(n-2) + f(n-1)

递归方法实现 (时间复杂度O(2^n))

递归式 :climbStairs(n) = climbStairs(n - 1) + climbStairs(n - 2)
停止条件:n = 1 return 1; n = 2 return 2;

public int climbStairs(int n){if(n == 0) return 0;if(n == 1) return 1;if(n == 2) return 2;return climbStairs(n - 1) + climbStairs(n - 2);}

动态规划 (时间复杂度O(n))

  1. 定义一个长度为n的数组dp,数组中的元素代表到达该层台阶的方法
  2. 动态规划表达式 dp[i] = dp[i - 1] + dp[i - 2]
public int climbStairs(int n){if(n == 1) return 1;if(n == 2) return 2;int[] dp = new int[n];dp[0] = 1;dp[1] = 2;for(int i = 2; i < n; i ++){dp[i] = dp[i - 1] + dp[i - 2];}return dp[n - 1];}

动态规划空间复杂度优化

public int climbStairs2(int n){if(n == 1) return 1;if(n == 2) return 2;int[] dp = new int[n];int first = 1;int second = 2;int res = 0;for(int i = 2; i < n; i ++){res = first + second;first = second;second = res;}return res;}

leetcode70 爬楼梯相关推荐

  1. 【c++】leetcode70 爬楼梯

    1.题目 leetcode70 爬楼梯 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢?示例 1: 输入:n = 2 输出:2 解 ...

  2. 斐波那契数拓展问题:leetcode-70 爬楼梯问题 leetcode-1137 泰波那契数问题解法

    假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 这是道经典的题目,我们可以在Leetcode,pta,剑指offer等地方经常看 ...

  3. leetcode--70. 爬楼梯

    假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: 2 解释: 有两 ...

  4. LeetCode--70. 爬楼梯(动态规划)

    爬楼梯(动态规划) 1. 题目描述 2. 题目分析 3. C语言实现 1. 题目描述 难度:简单 2. 题目分析 爬楼梯这道题是一个很典型的问题了,这是一道经典的动态规划的问题: 动态规划 不难发现, ...

  5. 动态规划LeetCode70爬楼梯

    题目描述: 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 方法一: 1 class Solut ...

  6. [Swift]LeetCode70. 爬楼梯 | Climbing Stairs

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  7. LeetCode70. 爬楼梯(Java解法——使用完全背包求解)

    1 题目描述 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n = 2 输出:2 解释:有两种方法可以爬到楼 ...

  8. LeetCode70. 爬楼梯 [简单]——动态规划

    题目描述: 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 我的解题: 1.我的第一反应居然是做 ...

  9. LeetCode-70 爬楼梯

    题目描述: 思路想法: 这道题,用递归无疑是最不费脑子的. 假设现有 10个台阶,我最后可以走1步,也可以走2步:走1步的话递归9个台阶:走两步递归8个台阶: 但是提交发现超时了. 这个时候当然是动态 ...

最新文章

  1. 《疯狂动物城》电脑壁纸
  2. 关于listen的第二个参数backlog的一些问答见解
  3. php 获取文件大小 修改时建,php遍历目录输出文件大小,类型,修改时间.
  4. ECCV18 | UC伯克利提出基于自适应相似场的语义分割
  5. RubyGem version error: rack(1.0.0 runtime)
  6. 页面404?找不到页面咋整?
  7. 男神.png misc之图片lsb隐写
  8. Snapde电子表格支持的文件格式
  9. 智能化里面计算机网络设计思路,智能化设计思路.doc
  10. ios  关闭更新(第三方软件 添加描述文件)
  11. 「独家分享」阿里巴巴、腾讯、百度的内部薪资及职级体系
  12. mp4视频测试地址url
  13. 【08月07日】A股滚动市盈率PE最低排名
  14. 原创OI题目:部落冲突
  15. Unity Shader-热空气扭曲效果(多种实现方案,包括移动平台)
  16. Python学习:print函数的用法
  17. 最短路:迪杰斯特拉算法
  18. 盒式交换机和框式交换机的区别
  19. 闲看花开花落,云卷云舒
  20. Android6.0动态设置读写权限(Android拍照或从相册中选图片预览出现问题)

热门文章

  1. OpenHarmony之Ubuntu22.04执行hb set报错
  2. 清华大学实验组18篇论文被ACL 2022录用
  3. 第7章 浮动(制作电视剧详情列表页面)
  4. 自主系统的未来发展趋势
  5. 突破信任瓶颈 ASP春天渐近
  6. 迈出出道第一步,下一个社区之星就是你!(资深开发者必看)
  7. 3dmax沙发枕模型的制作方法
  8. AI学习路线图(转)
  9. 学完武汉Java语开发之后,有哪些就业方向?介绍这3个
  10. “跑”进百亿俱乐部的特步,能追上安踏吗?