一、题目
函数原型:
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
相关推荐
xin_nai12 小时前
LeetCode热题100(Java)(3)滑动窗口黎阳之光13 小时前
视频孪生赋能智慧能源园区:黎阳之光打造全域数智化新标杆yyy(十一月限定版)13 小时前
ACM&OJ最终选拔赛啦啦啦_999913 小时前
1. 线性回归之 导数偏导数踩坑记录13 小时前
leetcode hot100 5. 最长回文子串 中心扩展法 medium雨季mo浅忆13 小时前
模拟面试梳理itzixiao13 小时前
L1-058 6翻了(15分)[java][python]念何架构之路13 小时前
数组和切片实战重生之我是Java开发战士13 小时前
【数据结构】AVL树解析小π军13 小时前
STL之multiset 常见API介绍