一、题目
函数原型:
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
相关推荐
灵感__idea3 小时前
Hello 算法:贪心的世界ZK_H4 小时前
嵌入式c语言——关键字其6澈2074 小时前
深入浅出C++滑动窗口算法:原理、实现与实战应用详解ambition202424 小时前
从暴力搜索到理论最优:一道任务调度问题的完整算法演进历程cmpxr_4 小时前
【C】原码和补码以及环形坐标取模算法qiqsevenqiqiqiqi4 小时前
前缀和差分代码旅人ing4 小时前
链表算法刷题指南Yungoal5 小时前
常见 时间复杂度计算6Hzlia5 小时前
【Hot 100 刷题计划】 LeetCode 48. 旋转图像 | C++ 矩阵变换题解不爱吃炸鸡柳6 小时前
单链表专题(完整代码版)