leetcode70 爬楼梯
爬楼梯
分析:对于每一次向上走台阶一共两种可能,一个台阶或者两个台阶,因此则有递归:
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))
- 定义一个长度为n的数组dp,数组中的元素代表到达该层台阶的方法
- 动态规划表达式 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 爬楼梯相关推荐
- 【c++】leetcode70 爬楼梯
1.题目 leetcode70 爬楼梯 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢?示例 1: 输入:n = 2 输出:2 解 ...
- 斐波那契数拓展问题:leetcode-70 爬楼梯问题 leetcode-1137 泰波那契数问题解法
假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 这是道经典的题目,我们可以在Leetcode,pta,剑指offer等地方经常看 ...
- leetcode--70. 爬楼梯
假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: 2 解释: 有两 ...
- LeetCode--70. 爬楼梯(动态规划)
爬楼梯(动态规划) 1. 题目描述 2. 题目分析 3. C语言实现 1. 题目描述 难度:简单 2. 题目分析 爬楼梯这道题是一个很典型的问题了,这是一道经典的动态规划的问题: 动态规划 不难发现, ...
- 动态规划LeetCode70爬楼梯
题目描述: 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 方法一: 1 class Solut ...
- [Swift]LeetCode70. 爬楼梯 | Climbing Stairs
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- LeetCode70. 爬楼梯(Java解法——使用完全背包求解)
1 题目描述 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n = 2 输出:2 解释:有两种方法可以爬到楼 ...
- LeetCode70. 爬楼梯 [简单]——动态规划
题目描述: 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 我的解题: 1.我的第一反应居然是做 ...
- LeetCode-70 爬楼梯
题目描述: 思路想法: 这道题,用递归无疑是最不费脑子的. 假设现有 10个台阶,我最后可以走1步,也可以走2步:走1步的话递归9个台阶:走两步递归8个台阶: 但是提交发现超时了. 这个时候当然是动态 ...
最新文章
- 《疯狂动物城》电脑壁纸
- 关于listen的第二个参数backlog的一些问答见解
- php 获取文件大小 修改时建,php遍历目录输出文件大小,类型,修改时间.
- ECCV18 | UC伯克利提出基于自适应相似场的语义分割
- RubyGem version error: rack(1.0.0 runtime)
- 页面404?找不到页面咋整?
- 男神.png misc之图片lsb隐写
- Snapde电子表格支持的文件格式
- 智能化里面计算机网络设计思路,智能化设计思路.doc
- ios 关闭更新(第三方软件 添加描述文件)
- 「独家分享」阿里巴巴、腾讯、百度的内部薪资及职级体系
- mp4视频测试地址url
- 【08月07日】A股滚动市盈率PE最低排名
- 原创OI题目:部落冲突
- Unity Shader-热空气扭曲效果(多种实现方案,包括移动平台)
- Python学习:print函数的用法
- 最短路:迪杰斯特拉算法
- 盒式交换机和框式交换机的区别
- 闲看花开花落,云卷云舒
- Android6.0动态设置读写权限(Android拍照或从相册中选图片预览出现问题)