You are climbing a stair case. It takes n steps to reach to the top.
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
斐波那契数列的典型应用。
0级台阶:0
1级台阶:1
2级台阶:2
3级台阶:1+2=3
4级台阶:2+3=5
……
n级台阶:f(n-2)+f(n-1)=f(n)
注意
public int climbStairs(int n) {
if (n < 0) {
return -1;
} else if (n <= 2) {
return n;
}
// 定义三个变量,空间复杂度是O(1)
int step1 = 1;
int step2 = 2;
int step3 = 0;
// 三个变量一直循环
// climbStairs(n) = climbStairs(n - 1) + climbStairs(n - 2)
for (int i = 3; i <= n; i++) {
step3 = step1 + step2;
step1 = step2;
step2 = step3;
}
return step3;
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。