一、题目
函数原型:
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
相关推荐
YangYang9YangYan40 分钟前
2027供应链计划校招:数学与应用数学专业如何把预测模型讲成业务决策?jsjzsl21 小时前
递归自改进系统(RSI)的本质是自发对称破缺:智能爆炸有界—— AI研发切记盲目投入程序员清风1 小时前
最短路径算法:BFS、Dijkstra 与 Floyd梦帮科技1 小时前
Kali Linux Scapy 畸形报文构造学——深度解剖非法 TCP Flags 与反常序列号171320330计算机毕设编程2 小时前
计算机毕业设计 基于YOLO改进算法的车辆特征识别系统设计与实现--lw姜鱼问生2 小时前
Nginx gzip 压缩:一个配置让页面加载快 3 倍不会就选b2 小时前
算法日常・每日刷题--<动态规划>23GreatSQL社区3 小时前
主从复制SQL线程中断——字符集砸出的坑Tisfy4 小时前
LeetCode 2333.最小差值平方和:排序 + 数学计算(不用二分)