題目:
編寫乙個函式,輸入是乙個無符號整數,返回其二進位制表示式中數字位數為 『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...