一、题目
函数原型:
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
相关推荐
a1879272183111 小时前
【算法】动态规划第四篇:背包收官——min 哨兵、计数世界与组合排列分水岭2601_9622974812 小时前
在python3中、下列输出变量a的正确写法是_2020超星大数据Python免费答案辰烨chenye12 小时前
LeetCode Hot 100 题解 · 子串篇辰烨chenye12 小时前
LeetCode Hot 100 题解 · 堆篇手写码匠12 小时前
华为云Flexus+DeepSeek征文|DeepSeek 应用监控告警体系实战:从“用户投诉才知道“到“故障前就发现“shehuiyuelaiyuehao13 小时前
算法29,前缀和,除自身以外的数组的乘积智购科技自动售货机厂家13 小时前
2026自动售货机设备清洁效果自动验证:从图像比对到评分算法的工程实践~YH姜穆澜14 小时前
机器学习实战指南:从算法原理到工程落地Q一件事14 小时前
RWEQ——保留与消去P的soil_loss联合推导