g0201_0300.s0201_bitwise_and_of_numbers_range.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
package g0201_0300.s0201_bitwise_and_of_numbers_range;
// #Medium #Bit_Manipulation #Algorithm_II_Day_19_Bit_Manipulation
// #2022_06_28_Time_8_ms_(74.15%)_Space_44.4_MB_(39.54%)
/**
* 201 - Bitwise AND of Numbers Range\.
*
* Medium
*
* Given two integers `left` and `right` that represent the range `[left, right]`, return _the bitwise AND of all numbers in this range, inclusive_.
*
* **Example 1:**
*
* **Input:** left = 5, right = 7
*
* **Output:** 4
*
* **Example 2:**
*
* **Input:** left = 0, right = 0
*
* **Output:** 0
*
* **Example 3:**
*
* **Input:** left = 1, right = 2147483647
*
* **Output:** 0
*
* **Constraints:**
*
* * 0 <= left <= right <= 231 - 1
**/
public class Solution {
private static final int[] MASKS =
new int[] {
0,
0x80000000,
0xC0000000,
0xE0000000,
0xF0000000,
0xF8000000,
0xFC000000,
0xFE000000,
0xFF000000,
0xFF800000,
0xFFC00000,
0xFFE00000,
0xFFF00000,
0xFFF80000,
0xFFFC0000,
0xFFFE0000,
0xFFFF0000,
0xFFFF8000,
0xFFFFC000,
0xFFFFE000,
0xFFFFF000,
0xFFFFF800,
0xFFFFFC00,
0xFFFFFE00,
0xFFFFFF00,
0xFFFFFF80,
0xFFFFFFC0,
0xFFFFFFE0,
0xFFFFFFF0,
0xFFFFFFF8,
0xFFFFFFFC,
0xFFFFFFFE
};
public int rangeBitwiseAnd(int left, int right) {
return left == right ? left : right & MASKS[Integer.numberOfLeadingZeros(left ^ right)];
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy