一、题目
函数原型:
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
相关推荐
叶子爱分享7 分钟前
经典排序算法之归并排序(Merge Sort)珹洺13 分钟前
C++算法竞赛篇:DevC++ 如何进行debug调试Norvyn_723 分钟前
LeetCode|Day18|20. 有效的括号|Python刷题笔记呆呆的小鳄鱼1 小时前
leetcode:冗余连接 II[并查集检查环][节点入度]墨染点香1 小时前
LeetCode Hot100【6. Z 字形变换】沧澜sincerely1 小时前
排序【各种题型+对应LeetCode习题练习】CQ_07121 小时前
自学力扣:最长连续序列弥彦_1 小时前
cf1925B&CYuTaoShao1 小时前
【LeetCode 热题 100】994. 腐烂的橘子——BFSWendy14419 小时前
【线性回归(最小二乘法MSE)】——机器学习