一、题目
函数原型:
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
相关推荐
LCG元14 小时前
电机控制进阶:STM32F303硬件比较器实现FOC算法解析丰海洋14 小时前
Leetcode-hot100-136只出现一次的数字We་ct14 小时前
LeetCode 124. 二叉树中的最大路径和:刷题解析Anastasiozzzz16 小时前
MySQL JOIN:底层原理、算法演进与多表性能之谜追随者永远是胜利者1 天前
(LeetCode-Hot100)253. 会议室 IIJason_Honey21 天前
【平安Agent算法岗面试-二面】程序员酥皮蛋1 天前
hot 100 第三十五题 35.二叉树的中序遍历追随者永远是胜利者1 天前
(LeetCode-Hot100)207. 课程表香芋Yu1 天前
【大模型面试突击】08_推理范式与思维链仰泳的熊猫1 天前
题目1535:蓝桥杯算法提高VIP-最小乘积(提高型)