描述:
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.
思路:
由于相邻的两个数最低位肯定有0有1,所以直接and肯定为0,所以可以通过直接and来和向右移位获得一个区间内的相同的位数,最后再通过向左移位获得一个区间所有数字相与的结果。
代码:
public int rangeBitwiseAnd(int m, int n) { int offset=0; while(m!=n) { m>>=1; n>>=1; offset++; } return m<<offset; }
时间: 2024-08-07 07:31:54