LeetCode 筆記 - 191. Number of 1 Bits
給定一個數字,請計算出在 Binary 中 1
的數量
解題思維
這個計算其實就是 漢明距離
簡單一點可以實作 Binary 轉換演算法
在過程中計算 1
的數量即可
而目前已知最快速演算法
會持續地將 x
與 x - 1
做 and 所得到的最低位永遠為 0,藉此來快速移除 1
例如
Expression | Value |
---|---|
X | 0 1 0 0 0 1 0 0 0 1 0 0 0 0 |
X-1 | 0 1 0 0 0 1 0 0 0 0 1 1 1 1 |
X & (X-1) | 0 1 0 0 0 1 0 0 0 0 0 0 0 0 |
程式碼請看第二種範例
完成 😎
程式碼
1 | class Solution: |
高效演算法1
2
3
4
5
6
7
8
9class Solution:
def hammingWeight(self, num: int) -> int:
weight = 0
while num:
weight += 1
num &= num - 1
return weight