一、题目
函数原型:
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
相关推荐
郝学胜-神的一滴1 小时前
当AI遇见架构:Vibe Coding时代的设计模式复兴Frostnova丶6 小时前
LeetCode 190.颠倒二进制位骇城迷影6 小时前
代码随想录:链表篇专注前端30年7 小时前
智能物流路径规划系统:核心算法实战详解json{shen:"jing"}7 小时前
字符串中的第一个唯一字符追随者永远是胜利者8 小时前
(LeetCode-Hot100)15. 三数之和程序员酥皮蛋9 小时前
hot 100 第二十七题 27.合并两个有序链表BlockWay9 小时前
西甲赛程搬进平台:WEEX以竞猜开启区域合作落地马士兵教育9 小时前
程序员简历如何编写才能凸显出差异化,才能拿到更多面试机会?hqyjzsb10 小时前
企业培训ROI深度分析:如何将CAIE认证的显性与隐性成本纳入投资回报率模型