牛客-劍指offer 09 | 變態跳臺階

題目描述

一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。

題解

跳上1級臺階:1種

跳上2級臺階:

  • 最後跳1級,1種
  • 最後跳2級,1種

跳上3級臺階:

  • 最後跳1級,2種
  • 最後跳2級,1種
  • 最後跳3級,1種


跳上n級臺階:

  • 最後跳1級,f(n-1) 種
  • 最後跳2級,f(n-2) 種
  • 最後跳n-1級,f(1) 種
  • 最後跳n級,1 種

即 f(n) = f(n-1) + f(n-2) + … f(1) + 1;
同理 f(n-1) = f(n-2) + f(n-3) + … f(1) + 1

兩式相減得:f(n) = 2f(n-1)

即:

# -*- coding:utf-8 -*-
class Solution:
    def jumpFloorII(self, number):
        # write code here
        temp = 1
        if number == 1:
            return temp
        for i in range(2, number+1):
            temp = temp*2
        return temp
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章