一隻青蛙一次可以跳上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);
}
}