跳臺階 & 變態跳臺階 (C/C++, Java, Python 分別實現)
阿新 • • 發佈:2019-02-20
跳臺階-題目描述
一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。思路:f(0)=0, f(1)=1, f(2)=2, n>2時 狀態轉移方程為 f(n) = f(n-1) + f(n-2)
C/C++
Java
Python 執行時間:31ms佔用記憶體:5608k
# -*- coding:utf-8 -*- class Solution: def jumpFloor(self, number): # write code here ans = [] ans.append(0) ans.append(1) ans.append(2) for i in range(3,100): ans.append(ans[i-1] + ans[i-2]) return ans[number]
變態跳臺階-題目描述
一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。C/C++
Java
Python
數學推倒 法 執行時間:30ms佔用記憶體:5604k
# -*- coding:utf-8 -*-
class Solution:
def jumpFloorII(self, number):
# write code here
return 2**(number-1)
移位 法 執行時間:25ms佔用記憶體:5856k
# -*- coding:utf-8 -*- class Solution: def jumpFloorII(self, number): # write code here if number == 0: return 0 elif number == 1: return 1 elif number == 2: return 2 else: return 2<<(number-2) //左移number-2位