一、题目
函数原型:
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
相关推荐
EdmundXjs6 小时前
大模型核心概念解读lookaroundd6 小时前
llm-compressor 普通量化调用链分析中小企业实战军师刘孙亮6 小时前
家居建材营销新趋势:数字化、体验式与可持续方向-佛山鼎策创局破局增长咨询有限公司小羊在睡觉6 小时前
力扣239. 滑动窗口最大值兰令水6 小时前
topcode【随机算法题】【2026.5.20打卡-java版本】此生决int7 小时前
算法从入门到精通——前缀和凯瑟琳.奥古斯特7 小时前
传输层核心功能解析大大杰哥7 小时前
leetcode hot100(4)矩阵小白|7 小时前
cmake:昇腾CANN构建系统完全指南nebula-AI7 小时前
人工智能导论:模型与算法(未来发展与趋势)