1.题目
LeetCode:476. 数字的补数
【easy】
2.解题
方法一:掩码异或
由题可知补数是原数二进制的取反,所以比如5的二进制是0101,与0111进行异或操作结果是0010.因此我们求得掩码即可
java:
class Solution {
public int findComplement(int num) {
int mask = 1;
mask <<= 30;
while ((num & mask) == 0) mask >>= 1;
mask = (mask << 1) - 1;
return num ^ mask;
}
}
本文介绍了一种使用Java解决LeetCode中476题——数字的补数的方法。通过位操作,利用掩码异或来找到一个整数的补数。掩码首先初始化为1并向左移位,直到找到第一个与输入数字的位不匹配的位置,然后将掩码左移一位减一,最后与原数异或得到补数。
1185

被折叠的 条评论
为什么被折叠?



