LeetCode476 NumberComplement

2024-08-31 13:48

本文主要是介绍LeetCode476 NumberComplement,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目要求:The complement strategy is to flip the bits of its binary representation。

其实求得就是~num,可是java中int型需要32bit来表示,如果把num=5(101)直接取反,得到的是11111111111111111111111111111010,即把5之前的0也全部给取反了。所以我们需要得到5的二进制表示中,首个1出现的位置,所以用int mask = Integer.MAX_VALUE和num做与运算,每做一次,mask左移一位。当while循环结束的时候,mask左移了多少位,num的二进制就有多少位。

public int findComplement(int num) {int mask = Integer.MAX_VALUE;while((mask & num) != 0) mask <<= 1;//用于判断num第一位的位置。return ~mask & ~num;}

这篇关于LeetCode476 NumberComplement的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1124079

相关文章

java数据结构与算法刷题-----LeetCode476. 数字的补数

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 位运算:取出非前导0位标1,进行异或2. 笨办法 1. 位运算:取出非前导0位标1,进行异或 因为这道题