题目描述
思路分析
记
f
[
n
]
f[n]
f[n]为跳到n级台阶的方法数。
可以发现:
f
[
1
]
=
1
,
f
[
2
]
=
2
,
f
[
i
]
=
f
[
i
−
1
]
+
f
[
i
−
2
]
(
n
>
=
3
)
f[1]=1,f[2]=2,f[i]=f[i-1]+f[i-2] (n>=3)
f[1]=1,f[2]=2,f[i]=f[i−1]+f[i−2](n>=3)
空间复杂度
O
(
N
)
O(N)
O(N) 用
a
,
b
a,b
a,b两个变量也可以把时间复杂度变成
O
(
1
)
O(1)
O(1)
方法和斐波那契数列完全一样。
代码实现
class Solution {
public:
//转移方程 f[i]=f[i-1]+f[i-2];
int jumpFloor(int n) {
if(n==1) return 1;
if(n==2) return 2;
int a=1,b=2;
for(int i=1;i<=n-2;i++){
a=a+b;
int t=a;
a=b;
b=t;
}
return b;
}
};