leetcode刷题五十四

Posted hhh江月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
 */
var findComplement = 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)
    return 2 ** arr0.length - 1 - num
;


个人leetcode介绍

最后,介绍一下个人的leetcode,地址为:

https://leetcode.cn/u/huyuxuan-github/

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

以上是关于leetcode刷题五十四的主要内容,如果未能解决你的问题,请参考以下文章

leetcode刷题五十四

leetcode刷题五十四

leetcode刷题五十三

leetcode刷题五十三

leetcode刷题五十三

leetcode刷题五十三