一、题目
函数原型:
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
相关推荐
YangYang9YangYan15 分钟前
2027数学与应用数学转产品经理:面试解释与项目准备极光通讯25 分钟前
服务器内存来料检验(IQC)实操:批次追溯、外观判定与上机验证淡海水42 分钟前
02-04-原理篇-GC Roots与对象图遍历ClickHouseDB1 小时前
ClickHouse 大规模 OpenTelemetry 数据接入架构的可靠性演进Shaoshing1 小时前
BHU 润石工作室 251019自建赛题解玩AI的奶茶1 小时前
24GB 显存能跑多大的模型?参数量、精度与显存占用对照表java_nnnn1 小时前
LeetCode刷题双指针(有效三角形的个数+三数之和)Java人工智能培训1 小时前
智能博弈背景下中国AI国防建设的战略价值flinn_small2 小时前
三分算法:原理、实现与实战应用思茂信息2 小时前
CST软件UV Slice切片后可直接删除指定一侧实体