本題要求計算出乙個整數的二進位制中的1的個數,考察的是位運算的運用和理解。
本題會用到》、>>>、&等運算子,不會的可以去查一下。
本題的重點在於怎樣去統計1的個數,其實這個和去計算乙個數各位數之和類似(比如讓你求39的各位數之和,也就是12)。
那個題是迴圈取餘法去取得各個位的值然後加起來即可,那麼我們是否可以採用類似的方法呢?
注意到本題的數實際上是在二進位製上進行操作,而那個題是在10進製上進行取模10操作的.那類似的我們可以在二進位製上進行取模2操作,這樣就能獲取這個數最右邊上的值了,假設9的二進位制是1001,那麼對其進行取模2得到的就是那個1,那麼這樣就能進行統計了。
public class solution
return sum;
}}
劍指offerQ15 反轉鍊錶
輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭 也就是說 先設定兩個指標,分別記錄當前節點的前乙個和 當前節點的後乙個 在每次迴圈時,next指標記錄當前的下乙個位址 head指標反指指向pre,實現反轉鍊錶 之後pre指向當前指標,head指向下乙個指標 當head為空時,pre指向鍊錶的最後乙個,輸...
劍指offer 15 二進位制中1的個數
位運算 左移運算子m 例如 00001010 2 00101000 10001010 3 01010000 右移運算子與左移類似,但右移時處理最左邊位時稍微複雜 1 如果數字是乙個無符號數值,則用0填補最左邊的n位 2 如果數字是乙個有符號數值,則用數字的符號填補最左邊的n位 00001010 2 ...
劍指Offer 15 二進位制中1的個數
面試題15 二進位制中1的個數 題目 實現乙個函式,輸入乙個整數,輸出該數二級制表示中1的個數。例 把9表示成二進位制是1001,有2位是1。因此如果輸入9,則該函式輸出2。最直接的思路 從低位開始向高位逐一比較是否為1,並計數。時間複雜度 o n num的二進位制位數 空間複雜度 o 1 利用二進...