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