位运算

二进制第一位“1”所在下标

def find_one(num):
    return num & (-num)
    # -num = ~num + 1


if __name__ == '__main__':
    print(find_one(10), bin(10))  # 2 -> 10(2)

二进制的第k位是否为0

def is_zero(num, k):
    return not ((num >> k) & 1)


if __name__ == '__main__':
    print(is_zero(10, 2), bin(10))

只出现一次的数字

from typing import List

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        ans = 0
        for num in nums:
            ans ^= num
        return ans

最后更新于

这有帮助吗?