一、题目
函数原型:
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
相关推荐
青瓷程序设计3 分钟前
基于YOLO的安全帽佩戴检测系统~Python+模型训练+2026原创+YOLO算法Trouvaille ~4 分钟前
【优选算法篇】拓扑排序——逻辑先后与任务依赖的终极拆解T1an-17 分钟前
博乐科技笔试题XiYang-DING12 分钟前
【LeetCode】118.杨辉三角wuhen_n19 分钟前
排列算法完全指南 - 从全排列到N皇后,一套模板搞定所有排列问题ai生成式引擎优化技术23 分钟前
拓世网络技术开发工作室的ts概率递推ai工程应用技术GEOChatGPT,不同用户账号信息,网站引用效果CylMK25 分钟前
题解:UVA1218 完美的服务 Perfect Service重生之我是Java开发战士26 分钟前
【广度优先搜索】BFS解决拓扑排序:课程表I,课程表II,火星词典人道领域35 分钟前
LeetCode【刷题日记】:滑动窗口算法详解:从暴力法到最优解凤年徐37 分钟前
封装红黑树实现 mymap 和 myset