LeetCode191 位1的個數

2021-10-08 22:55:30 字數 885 閱讀 4288

編寫乙個函式,輸入是乙個無符號整數,返回其二進位制表示式中數字位數為 『1』 的個數(也被稱為漢明重量)。

輸入:00000000000000000000000000001011

輸出:3

解釋:輸入的二進位制串 00000000000000000000000000001011 中,共有三位為 『1』。

輸入:00000000000000000000000010000000

輸出:1

解釋:輸入的二進位制串 00000000000000000000000010000000 中,共有一位為 『1』。

輸入:11111111111111111111111111111101

輸出:31

解釋:輸入的二進位制串 11111111111111111111111111111101 中,共有 31 位為 『1』。

方法一:迴圈和位移動

public

inthammingweight

(int n)

mask <<=1;

}return bits;

}

方法二:位操作的小技巧

我們可以把前面的演算法進行優化。我們不再檢查數字的每乙個位,而是不斷把數字最後乙個 1 反轉,並把答案加一。當數字變成 0 的時候偶,我們就知道它沒有 1 的位了,此時返回答案。

這裡關鍵的想法是對於任意數字 n ,將 n 和 n - 1 做與運算,會把最後乙個 1 的位變成 0 。

public

inthammingweight

(int n)

return sum;

}

Leetcode191 位1的個數

題目 編寫乙個函式,輸入是乙個無符號整數,返回其二進位制表示式中數字位數為 1 的個數 也被稱為漢明重量 輸入 11111111111111111111111111111101 輸出 31 解釋 輸入的二進位制串 11111111111111111111111111111101 中,共有 31 位為...

LeetCode 191 位1的個數

題意 編寫乙個函式,輸入是乙個無符號整數,返回其二進位制表示式中數字位數為 1 的個數 也被稱為漢明重量 lowbit n 定義為非負整數 n nn 在二進位制表示下最低位的 1 11 及其後邊所有的 0 00 構成的數值。方法一 n n 1 作用 將 n nn 的二進位制表示中最低位的 1 11 ...

LeetCode 191 位1的個數

問題描述 編寫乙個函式,輸入是乙個無符號整數,返回其二進位制表示式中數字位數為 1 的個數 也被稱為漢明重量 示例 輸入 11輸出 3解釋 整數 11 的二進位制表示為00000000000000000000000000001011示例 2 輸入 128輸出 1解釋 整數 128 的二進位制表示為0...