Leetcode191 位1的個數

2021-10-01 19:50:28 字數 799 閱讀 8036

題目:

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

輸入:11111111111111111111111111111101

輸出:31

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

題解:方法一:

簡單粗暴些,依次判斷最低位是否是 1,然後把它加入到結果中。判斷最低位是否是 1,我們只需要把原數字和 000000…001 相與,也就是和 1 相與即可。

scala**如下:

def hammingweight

(n: int)

: int =

} count

}

方法二:

思路:我們只需要將該數字與其減一之後的值進行與運算,然後再次迴圈,直到為0,其迴圈的次數就是該數字中1的個數。原理就是n&n-1一定可以消去該數字最後一位的1,,大家可以這樣理解,不管對於n中最後乙個一的位置如何比如為…1000…(n個)假設1的後面有n個0,對於該數字減一而言就變成了…01111…(n個)後面的0全部就因為借位變成了1,此時將兩個數字相與就會把最後乙個1之後(包括1)全部變成了0.同理如此迴圈一定能將所有的1全部變成0,這樣迴圈的次數就變成了消去1的次數,也就是1的個數。

scala**如下:

def hammingweight2

(n: int)

: int =

count

}

LeetCode 191 位1的個數

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

LeetCode191 位1的個數

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

LeetCode 191 位1的個數

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