Tcdian / keep

今天不想做,所以才去做。
MIT License
5 stars 1 forks source link

201. Bitwise AND of Numbers Range #309

Open Tcdian opened 3 years ago

Tcdian commented 3 years ago

201. Bitwise AND of Numbers Range

给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。

Example 1

Input: [5,7]
Output: 4

Example 2

Input: [0,1]
Output: 0
Tcdian commented 3 years ago

Solution

/**
 * @param {number} m
 * @param {number} n
 * @return {number}
 */
var rangeBitwiseAnd = function(m, n) {
    let result = 0;
    while (m * 2 > n) {
        let i = 1;
        while (i <= m) {
            i *= 2;
        }
        if (i <= n) {
            break;
        }
        m %= i / 2;
        n %= i / 2;
        result += i / 2;
    }
    return result;
};
function rangeBitwiseAnd(m: number, n: number): number {
    let result = 0;
    while (m * 2 > n) {
        let i = 1;
        while (i <= m) {
            i *= 2;
        }
        if (i <= n) {
            break;
        }
        m %= i / 2;
        n %= i / 2;
        result += i / 2;
    }
    return result;
};