一、题目
函数原型:
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
相关推荐
白狐_79817 分钟前
408 数据结构算法题 01:线性表暴力求解保分指南乐观勇敢坚强的老彭30 分钟前
C++信奥:开关门、开关灯问题冻柠檬飞冰走茶30 分钟前
PTA基础编程题目集 7-31 字符串循环左移(C语言实现)Hi李耶43 分钟前
【LeetCode】4-寻找两个正序数组的中位数图灵机z1 小时前
【算法提高课】AcWing 1027. 方格取数 长期攻克提高课-day3(3/219)hans汉斯1 小时前
计算机科学与应用|改进MeanShift算法在智能监控视频中的应用研究我命由我123451 小时前
棘轮效应极简理解天才测试猿1 小时前
实例介绍:Unittest框架及自动化测试实现流程一次旅行2 小时前
AutoAWQ完整实战:MIT激活感知AWQ量化,模型显存减半、推理提速且精度无损GrowthDiary0072 小时前
算法题:寻找二维数组top k问题