一、题目
函数原型:
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
相关推荐
纪元A梦2 小时前
贪心算法应用:K-Means++初始化详解_不会dp不改名_2 小时前
leetcode_21 合并两个有序链表mark-puls2 小时前
C语言打印爱心Python技术极客2 小时前
将 Python 应用打包成 exe 软件,仅需一行代码搞定!吃着火锅x唱着歌2 小时前
LeetCode 3302.字典序最小的合法序列睡不醒的kun2 小时前
leetcode算法刷题的第三十四天吃着火锅x唱着歌2 小时前
LeetCode 978.最长湍流子数组我星期八休息3 小时前
深入理解跳表(Skip List):原理、实现与应用lingran__3 小时前
速通ACM省铜第四天 赋源码(G-C-D, Unlucky!)haogexiaole3 小时前
贪心算法python