一、题目
函数原型:
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 小时前
07-04-并发-ConcurrentBag-T-工作窃取WorkStealing算法leobertlan7 小时前
好玩系列:训练一个神经网络模型指导小孩玩游戏2-大局观教练Tisfy8 小时前
LeetCode 3876.构造奇偶一致的数组 II:三种情况分类讨论(其实还是脑筋急转弯)乐迪信息9 小时前
智慧港口船舶AI算法实现在线状态监测RisunJan10 小时前
后端高频面试题与解答木井巳10 小时前
【BFS/DFS 解决 FloodFill 算法】太平洋大西洋水流问题心抵鹊11 小时前
归并排序之翻转对(hard)白山编程大哥11 小时前
Java 集合算法:从排序、查找到底层原理的实战指南shehuiyuelaiyuehao11 小时前
算法34,位运算符操作,总结Navigator_Z11 小时前
LeetCode //C - 1224. Maximum Equal Frequency