We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。 1 阶 + 1 阶 2 阶
输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。
输入: 3 输出: 3 解释: 有三种方法可以爬到楼顶。 1 阶 + 1 阶 + 1 阶 1 阶 + 2 阶 2 阶 + 1 阶
输入: 3 输出: 3 解释: 有三种方法可以爬到楼顶。
//递归 /** * @param {number} n * @return {number} */ var climbStairs = function(n) { if(n-2>0){ return climbStairs(n-2)+climbStairs(n-1) }else{ return n } }; /** 标签:动态规划 本问题其实常规解法可以分成多个子问题,爬第n阶楼梯的方法数量,等于 2 部分之和 爬上 n-1n−1 阶楼梯的方法数量。因为再爬1阶就能到第n阶 爬上 n-2n−2 阶楼梯的方法数量,因为再爬2阶就能到第n阶 所以我们得到公式 dp[n] = dp[n-1] + dp[n-2]dp[n]=dp[n−1]+dp[n−2] 同时需要初始化 dp[1]=1dp[0]=1 和 dp[2]=dp[1] +dp[0]=2 时间复杂度:O(n)O(n) */ /** * @param {number} n * @return {number} */ var climbStairs = function(n) { const dp = []; dp[1] = 1; dp[2] = 2; for(let i = 3; i <= n; i++) { dp[i] = dp[i - 1] + dp[i - 2]; } return dp[n]; };
The text was updated successfully, but these errors were encountered:
No branches or pull requests
题目描述:
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
示例 1:
示例 2:
解题:本人自己思考到的方法是用递归,无奈耗时太久,后面看题解发现这是斐波那契数列
The text was updated successfully, but these errors were encountered: