一、题目
函数原型:
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 小时前
Day52:2026年3月20日打卡2401_831824966 小时前
基于C++的区块链实现We་ct6 小时前
LeetCode 918. 环形子数组的最大和:两种解法详解愣头不青6 小时前
238.除了自身以外数组的乘积人工智能AI酱7 小时前
【AI深究】逻辑回归(Logistic Regression)全网最详细全流程详解与案例(附大量Python代码演示)| 数学原理、案例流程、代码演示及结果解读 | 决策边界、正则化、优缺点及工程建议WangLanguager7 小时前
逻辑回归(Logistic Regression)的详细介绍及Python代码示例m0_518019487 小时前
C++与机器学习框架一段佳话^cyx7 小时前
详解逻辑回归(Logistic Regression):原理、推导、实现与实战qq_417695057 小时前
C++中的代理模式高级应用xiaoye-duck7 小时前
《算法题讲解指南:动态规划算法--路径问题》--5.不同路径,6.不同路径II