一、题目
函数原型:
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
相关推荐
船厂电气自动化ai大模型36 分钟前
AI大模型与数学 第32课 函数凹凸性与二阶导数:拐点求解、凹凸区间计算(10道二阶导数计算题)旖旎夜光38 分钟前
LeetCode 3:无重复字符的最长子串(滑动窗口) —— 题解叠层归一研究院2 小时前
AGI 系统(十一):二阶网络 — 二阶递归 × 多主体 (元符号网络)zlinear数据采集卡3 小时前
D223的PWM电机控制:6路独立脉冲+加减速算法深度解析城管不管3 小时前
重生——第九次面试2026.8.13某车一面杨石兴3 小时前
31、玩具MoM:用2x2矩阵串起全套流程江畔柳前堤3 小时前
Function Calling 与 Tool Calling:从认知到工程的全景深度解析Navigator_Z3 小时前
LeetCode //C - 1192. Critical Connections in a Networkzander2584 小时前
LeetCode 739:每日温度——为什么单调栈要持续弹出2601_955759884 小时前
如何降低 Claude API 批量生产返工率