一、题目
函数原型:
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
相关推荐
烬羽2 小时前
递归老写崩?一个"退回"公式,把回溯题变成填空题闪电悠米2 小时前
力扣hot100-41.缺失的第一个正数-原地哈希详解星空露珠3 小时前
28种颜色对应名称,QXWZ_IA5 小时前
桥梁数字孪生怎么落地?Kel5 小时前
输出层与反分词(Output Layer & Detokenization)陕西企来客5 小时前
2026年7月技术好GEO优化方案:算法适配与内容策略风栖柳白杨5 小时前
【面试】AI算法工程师_空白自测版本imbackneverdie6 小时前
知网官宣:禁止 AI 列为论文署名作者,标注 Gemini、DeepSeek 等 AI 为作者的稿件统一下架闪电悠米7 小时前
力扣hot100-73.矩阵置零-标记数组详解栋***t7 小时前
从“纸质试卷”到“AI智能组卷”,麦塔在线考试系统如何重构出题逻辑?