一、题目
函数原型:
int findComplement(int num)
二、思路将num的每一位取出来,取反后,乘以2的位次方,最终所有结果相加即可得到结果。
++如何取出num的每一位?++
num&1:取出num的最低位
num>>1:num算数右移1,最高位补符号位(由于num为整数,所以最高位补0)
++如何将取出的每一位取反?++
(num&1)^1:按位异或1,如果是0则取反为1,如果是1则取反为0
三、代码
cppint findComplement(int num) { int result=0; int i=0; while(num) { result+=pow(2,i)*(num&1^1); i++; num=num>>1; } return result; }
leetcode:476. 数字的补数
南林yan2023-11-16 17:34
相关推荐
m0_531237171 天前
C语言-数组啊阿狸不会拉杆1 天前
《计算机视觉:模型、学习和推理》第 4 章-拟合概率模型ADDDDDD_Trouvaille1 天前
2026.2.20——OJ92-94题hansang_IR1 天前
【题解】类欧几里得算法陈天伟教授1 天前
人工智能应用- 人工智能交叉:06.解析蛋白质宇宙We་ct1 天前
LeetCode 114. 二叉树展开为链表:详细解题思路与 TS 实现像素猎人1 天前
范围for语法(除for循环/while循环/do...while循环的第四种循环)ぇ1 天前
2.20进制转化,表达式求值,删除字符追随者永远是胜利者1 天前
(LeetCode-Hot100)461. 汉明距离努力学算法的蒟蒻1 天前
day90(2.19)——leetcode面试经典150