一、题目
函数原型:
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
相关推荐
行走的陀螺仪5 小时前
【转型攻略】2026 年,后端 / 全栈工程师转 AI Agent 方向:能力地图、按周学习路线与面试要点小蒋观天下6 小时前
雷击与浪涌防护:前端SPD选型、接地网误区,接地不当反而引入干扰WBluuue7 小时前
数据结构与算法:分块(一):块状数组、块状链表圣保罗的大教堂8 小时前
leetcode 3619. 总价值可以被 K 整除的岛屿数目 中等澳鹏Appen9 小时前
澳鹏重磅发布ExamOCRBench:面向端到端试卷判分的多任务基准benjormin9 小时前
Java数据结构 二叉搜索树人工智能培训9 小时前
知识图谱:结构化表达实体与关系的知识组织技术地平线开发者9 小时前
QAT 实战:从 PyTorch 模型到 J6E 实板精度与延时验证IT星宿9 小时前
github-gravity:用 Rapier2D 把 GitHub 贡献图做成 SVG 物理动画