一、题目
函数原型:
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
相关推荐
小O的算法实验室1 天前
2026年ASOC,基于深度强化学习的无人机三维复杂环境分层自适应导航规划方法,深度解析+性能实测郭涤生1 天前
STL vector 扩容机制与自定义内存分配器设计分析༾冬瓜大侠༿1 天前
vectorRicky111zzz1 天前
leetcode学python记录1汀、人工智能1 天前
[特殊字符] 第58课:两个正序数组的中位数liu****1 天前
第16届省赛蓝桥杯大赛C/C++大学B组(京津冀)汀、人工智能1 天前
[特殊字符] 第79课:分割等和子集汀、人工智能1 天前
[特殊字符] 第74课:完全平方数CoderCodingNo1 天前
【GESP】C++四、五级练习题 luogu-P1177 【模板】排序Proxy_ZZ01 天前
从零实现LDPC比特翻转译码器:C语言实战与底层逻辑解析