劍指offer :跳臺階
阿新 • • 發佈:2019-03-23
一次 cto leetcode 不同的 nbsp 數組 每次 number back
這題之前刷leetcode也遇到過,感覺是跟斐波拉契差不多的題。
題目描述:
一只青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。
解題思路:
這類題一般就是用遞歸思想,先考慮跳一級臺階情況,再是兩級。發現由於跳臺階的選擇只有1級和2級,所以其實跳n級臺階就是跳n-1級和n-2級的和。
本科做斐波拉契用遞歸時已經知道會超時,由於分別計算f(n-1)和f(n-2)實際是重復計算了,所以用數組去存每次的計算結果,直接調用就可以。
代碼:
class Solution { public: intjumpFloor(int number) { vector<int> sum_jump; sum_jump.push_back(0); sum_jump.push_back(1); sum_jump.push_back(2); for(int i=3; i<=number; i++) { sum_jump.push_back(sum_jump[i-1]+sum_jump[i-2]); } return sum_jump[number]; } };
劍指offer :跳臺階