0


leetcode刷题五十四

leetcode刷题五十四

文章目录

题目链接

https://leetcode.cn/problems/number-complement/

题目叙述

对整数的二进制表示取反(0 变 1 ,1 变 0)后,再转换为十进制表示,可以得到这个整数的补数。

例如,整数 5 的二进制表示是 “101” ,取反后得到 “010” ,再转回十进制表示得到补数 2 。
给你一个整数 num ,输出它的补数。

题目思路

对于这道题目,我们根据补数的定义可以发现,这个所谓的补数其实就是对一个数字的二进制数字各个位置上面的0,1数字按位取反就可以了,我们根据二进制的数值按位取反的性质可以知道,一个数字与这个数字对应的补数相加的和是等于11111…1111(二进制表达式)(n个1,n的数目就是原本的数字对应的二进制的数字的位数)。于是为了求解一个数字的补数,我们可以首先求出这个数字的二进制表达式,然后计算二进制表达式的位数,接下来,利用11111…1111(二进制表达式)(n个1,n的数目就是原本的数字对应的二进制的数字的位数)减去原本的数字就可以得到了这个数字的补数的数值了。

题目解答代码(JavaScript)

/**
 * @param {number} num
 * @return {number}
 */varfindComplement=function(num){let n0 = num
    let arr0 =[]while(n0 - n0 %2!=0){
        arr0.push(n0 %2)
        n0 =(n0 - n0 %2)/2}
    arr0.push(n0)
    console.log(arr0)return2** arr0.length -1- num
};

个人leetcode介绍

最后,介绍一下个人的leetcode,地址为:
https://leetcode.cn/u/huyuxuan-github/

谢谢大家的关注与持续的支持了。


本文转载自: https://blog.csdn.net/m0_54218263/article/details/127165902
版权归原作者 hhh江月 所有, 如有侵权,请联系我们删除。

“leetcode刷题五十四”的评论:

还没有评论