一、题目
函数原型:
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
相关推荐
Дерек的学习记录5 小时前
C++:入门基础(下)yugi9878385 小时前
无线传感器网络中GAF算法节点特性分析1027lonikitave6 小时前
使用斐波那契数列讲解尾递归滴滴答滴答答7 小时前
LeetCode Hot100 之 16 合并两个有序链表ASKED_20197 小时前
企业级大模型微调(Fine-tuning)策略圣保罗的大教堂7 小时前
leetcode 3713. 最长的平衡子串 I 中等t198751287 小时前
基于Chirp分解和多相快速算法的离散分数傅里叶变换(DFRFT)MATLAB实现愚者游世8 小时前
力扣解决二进制 | 题型常用知识点梳理阿星AI工作室8 小时前
宝藏skills!90个顶尖博客信源自动抓,AI每天帮我筛出20篇精华!Ulyanov8 小时前
基于Python的单脉冲雷达导引头回波生成技术