题解 | #跳台阶#

跳台阶

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)。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务