1. 程式人生 > >劍指offer :跳臺階

劍指offer :跳臺階

一次 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:
    int
jumpFloor(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 :跳臺階