劍指offer_第8題_跳臺階
阿新 • • 發佈:2019-01-29
題目描述
- 一隻青蛙一次可以跳上1級臺階,也可以跳上2級。
- 求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)
理解
- 完全蒙啊
- 那我們就用特例先分析一下
如果有1級臺階,那有1種
如果有2級臺階,那有2種
如果有3級臺階,那一定是先跳1級或者先跳2級,再跳到3級臺階上,跳1級後有2種,跳2級後有1種,共有3種跳法 - 如果是n級臺階呢,假設有F(n)種跳法,那一定也是先跳1級或者先跳2級,再繼續跳到n級臺階,跳1級後有F(n-1)種,跳2級後有F(n-2)種,故有F(n)=F(n-1)+F(n-2)
- 可以發現本質上就是斐波那契數列問題
解題思路
和斐波那契數列寫法一樣
思路1
class Solution:
def jumpFloor(self, number):
if number == 1:
return 1
elif number == 2:
return 2
else:
a = 1
b = 2
for i in range(2,number):
a,b = b,a+b
return b
或者
class Solution:
def jumpFloor(self, number):
a=[1,2]
if number<=2:
return a[number-1]
else:
for i in range(2,number):
a.append(a[i-1]+a[i-2])
return a[number-1]