變態青蛙跳問題

一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。

分析:最後一個臺階是必須上的,而之前的每一個臺階都有兩種選擇,上或者不上,那麼前n-1個臺階就有2的n-1次方中選擇,這就是最終的答案,Java中實現2的n-1次方,要用到庫函數math.pow(2,n)。加入不允許用庫函數,就要用位移運算,而位移運算的效率還要更高。

“<<” 左移:右邊空出的位上補0,左邊的位將從字頭擠掉,其值相當於乘2。
位移運算首先將數字用二進制標示,在進行移位。例如16的二進制表示爲10000,左移一位爲100000,就是2的5次方。
綜上分析,代碼如下:

public class Solution {
    public int JumpFloorII(int target) {
        if(target == 0)
        {
            return -1;
        }
        // return math.pow(2,target - 1);
        return 1<<(target-1);
    }
}
發佈了42 篇原創文章 · 獲贊 2 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章