牛客-剑指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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章