1.%2取余判断
2.位运算
第一种:
def judge(num: int) -> bool:
"""True 代表是偶数 False代表是奇数"""
if num % 2:
return False
else:
return True
第二种:今天刷题碰到的,很有意思的位运算
def judge(num :int) -> bool:
"""True 代表是偶数 False代表是奇数"""
if num & 1:
return False
else:
return True
这是啥意思呢?
1 & 0 = 0
1 & 1 = 1
0 & 0 = 0
0 & 1 = 0
这就很像and,左侧为假则返回左侧,否则返回右侧
举例:
15 & 1 == 1
16 & 1 == 0
所以,可以使用位运算来判断一个数是否为奇数。
拓展!::::::
跟大佬学习的一天,原题:LeeCode 191. 位1的个数
我写的:
class Solution:
def hammingWeight(self, n: int) -> int:
return bin(n).count("1")
大佬写的:
class Solution(object):
def hammingWeight(self, n):
res = 0
while n:
res += 1
n &= n - 1
return res
大佬原话:
有个更为神奇的做法,那就是 n & (n - 1) ,这个代码可以把 n 的二进制中,最后一个出现的 1 改写成 0。
下面的这个图,说明了 n & (n - 1) 这个操作的原理。我们发现只要每次执行这个操作,就会消除掉 n 的二进制中 最后一个出现的 1。
因此执行 n & (n - 1) 使得 n 变成 0 的操作次数,就是 n 的二进制中 1 的个数。