LeetCode201 Bitwise AND of Numbers Range Java 题解

Posted phlsheji

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode201 Bitwise AND of Numbers Range Java 题解相关的知识,希望对你有一定的参考价值。

题目:

Given a range [m, n] where 0 <= m <= n <= 2147483647, return the bitwise AND of all numbers in this range, inclusive.

For example, given the range [5, 7], you should return 4.

解答:

假如说5:101  7:111  连续几个数相与的规律:一,仅仅要是同样的位置的数字不同样最后那个位置的结果一定是0 。二,假设高位不同样,从不同样的那位到最低位都会为0,比如5和7尽管第0位同样可是因为第一位不同样,所以最后结果第0位 和第一位都为0。  

假设理解了第二个规律就好办了,假设另个数位数不同样肯定最后结果为0。假设位数同样,从最高位開始寻找,将第一次发现不同样的那一位到最低位都置为0;


代码中,通过不断地右移直到两个数字相等。然后再左移同样的位数。这样做的效果事实上就是将位置不同样的都置为0


代码:

public static int rangeBitwiseAnd(int m, int n) {

int count=0;
while(m!=n)
{
m=m>>>1;
n=n>>>1;
count++;
}
return m<<count;


        
    }

以上是关于LeetCode201 Bitwise AND of Numbers Range Java 题解的主要内容,如果未能解决你的问题,请参考以下文章

sql CERTIFICADOSACAGÉMICOS - fn2CES_ALU_ObtenerFolioCertificado

面试之leetcode链表

Leetcode 238 Product of Array Except Self 时间O(n)和空间O解法

LeetCode 380 O时间插入删除和获取随机元素[Map 数组] HERODING的LeetCode之路

LeetCode 144: Binary Tree Preorder Traversal

LeetCode 145: Binary Tree Postorder Traversal