一、题目
函数原型:
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
相关推荐
Purple Coder8 小时前
基于DGN的电工基础-8QiLinkOS9 小时前
第三视觉理解徐玉生与他的商业活动(30)疯狂打码的少年10 小时前
【操作系统】页面置换算法(OPT/FIFO/LRU)Waay10 小时前
面试口述版:个人对 Prometheus 完整理解小O的算法实验室10 小时前
2026年CIE,优化客货协同运输:综合地铁系统的列车容量动态分配Coder_Shenshen11 小时前
西门子S7CommPlus协议鉴权算法原理与流程详解硕风和炜11 小时前
【LeetCode: 2492. 两个城市间路径的最小分数 + DFS】我是一颗柠檬12 小时前
【Java项目技术亮点】加权轮询负载均衡算法灯厂码农13 小时前
C语言动态内存分配完全指南(malloc、calloc、realloc、free)凯瑟琳.奥古斯特14 小时前
K次取反最大化数组和解法(力扣1005)