1. 题目来源
链接:70. 爬楼梯
2. 题目解析
典型 fib
数列问题。就是求 fib
数列第 n
项值是多少。执行 n-1
次,while(-- n)
很好用,有时候简单的模拟一下会很清晰。比如令 n=1
,--n
肯定不执行啊。最后返回 b
,你让 n=1,n=2
就能发现,n
是第 n
啊。不过这样举例子有有啥意思呢?
- 时间复杂度: O ( n ) O(n) O(n)。
- 空间复杂度: O ( n ) O(n) O(n)
代码:
class Solution {
public:
int climbStairs(int n) {
int a = 1, b = 1, c = 2;
while ( -- n) {
c = a + b;
a = b, b = c;
}
return b;
}
};