程式語言 - LeetCode - C++ - 201. Bitwise AND of Numbers Range



題目:


解答一:

class Solution {
public:
    int rangeBitwiseAnd(int left, int right) {
        int cnt = 0;

        while (left < right) {
            left >>= 1;
            right >>= 1;
            cnt += 1;
        }

        return left << cnt;
    }
};

解法二:

class Solution {
public:
    int rangeBitwiseAnd(int left, int right) {
        while (right > left) {
            right = right & (right - 1);
        }
        return right;
    }
};