题解 | #跳台阶#
跳台阶
https://www.nowcoder.com/practice/8c82a5b80378478f9484d87d1c5f12a4
class Solution:
def jumpFloor(self , number: int) -> int:
# write code here
if number < 2:
return 1
a = 1
b = 2
for i in range(2, number):
a, b = b, a+b
return b
解题思路:动态规划
通过找规律:
- 跳一阶台阶是1种跳法,即跳一步;
- 跳两阶台阶是2两种跳法,即直接跳2阶,或两次都是1阶;
- 跳三阶台阶是3种跳法,即每次都是一阶,记为111;一次二阶一次一阶,有两种,21和12;
- 跳四阶台阶是5种跳法,即1111,22,112,121,211。
- 以此类推,能找到规律,即当前的跳阶梯的种类数等于前面两个种类数之和,即f(i) = f(i-1)+f(i-2)(i>2),而f(1)=1,f(2)=2。
复杂度
时间复杂度为O(n),空间复杂度为O(1)。
查看13道真题和解析
