一、题目描述
假设你正在爬楼梯。需要 n
阶你才能到达楼顶。
每次你可以爬 1
或 2
个台阶。你有多少种不同的方法可以爬到楼顶呢?
二、解题思路过程
/**
* @param {number} n
* @return {number}
*/
var climbStairs = function(n) {
var p=0,q=0,r=1;
/*
我们用 f(x) 表示爬到第 x 级台阶的方案数,考虑最后一步可能跨了一级台阶,
也可能跨了两级台阶,所以我们可以列出如下式子:
f(x)=f(x−1)+f(x−2)
*/
for(var i=0;i<n;i++){
p=q;
q=r;
r=p+q;
}
return r;
};
三、复杂度分析
时间复杂度:,每次花费常数的时间代价。
空间复杂度:,使用的额外空间复杂度为常数。
四、题目来源
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/climbing-stairs