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刷题五十四的主要内容,如果未能解决你的问题,请参考以下文章