乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法(先後次序不同算不同的結果)。
這個題是斐波那契數列問題的變形。
思路(1)
用【劍指offer】面試題10(1)-斐波那契數列中解答斐波那契數列問題的思路即可:
建立並初始化兩個變數fibonaccifirst = f(0)和fibonaccisecond = f(1),在求解過程中不斷更新fibonaccifirst和fibonaccisecond,即依次把已經得到的兩個數列中間項儲存起來,這樣就可以根據定義,對斐波那契數列遞推地進行求解了,而且不會產生重複計算
時間複雜度是o(n),空間複雜度是o(1)。
思路(2)
根據題目可以推理出等式:
到達第 i 階的方法總數 = 第 i -1 階方法數 + 第 i -2 階方法數
所以利用建立乙個大小為n的陣列就可以根據等式關係求解問題,雖然空間複雜度不如第一種方法,但是**比較容易理解。
時間複雜度是o(n) ,空間複雜度是o(n) ,
// 思路(1)斐波那契
public
class
solution
if(target ==2)
long fibonaccifirst =1;
long fibonaccisecond =2;
long fibonaccin =0;
for(
int i =
2; i < target; i ++
)return fibonaccin;}}
//時間複雜度: o(n) ;空間複雜度:o(1)
// 思路(2)借助陣列
public
class
solution
int[
] dp =
newint
[target]
; dp[0]
=1; dp[1]
=2;for
(int i =
2; i < target; i++
)return dp[target -1]
;}}//時間複雜度: o(n) ;空間複雜度:o(n)
劍指offer面試題7
面試題7 用兩個棧實現佇列 using namespace std template class cqueue 預備知識 佇列 佇列也是一種常見的資料結構 特點是先進先出 fifo 在stl中有stack和queue兩個容器 template class stack 成員函式 empty size ...
劍指offer面試題11
面試題1 數值的整數的次方 題目 實現函式double power double base,int exponent 求base的 exponent次方。不得使用庫函式,同時不需要考慮大數問題。思路 首先應該明確指數的可能取值 正整數,0,負整數 另外還需要考慮底數是0的情形。對於負整指數,我們可以...
劍指offer面試題15
面試題15 鍊錶中倒數第k個結點 題目 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。為了符合大多數人的習慣,本題從1開始計數,即鍊錶的尾結點是倒數第乙個結點。例如乙個鍊錶有6個結點,從頭結點開始它們的值依次是1 2 3 4 5 6。這個鍊錶的倒數第3個結點是值為4的結點。預備知識 鍊錶結點的定義如下 ...