2011-10-07 30 views

回答

15

一個非常聰明的程序員會看java.lang.Integer.highestOneBit(int)方法,並考慮左移運算符(<<)。

+1

+1;不知道這種方法存在! –

+3

缺少具體公式。假設128中兩個的下一個冪是128,那麼'Math.max(1,Integer.highestOneBit(i-1)<< 1)'呢? –

5

假設輸入是一個正整數,一個非傳統的解決方案將是看數字的位模式。從左側找到第一個'1',然後考慮左邊那個位的值。

+0

你能解釋我該怎麼做嗎? – NullPointerException

6

這是一個非常簡單的算法(因爲這是家庭作業,你必須自己動手編寫了):

  1. 開始1爲兩個第一候選電源。
  2. 繼續將候選編號向左移動一位,直到它大於或等於目標編號。
相關問題