201. Bitwise AND of Numbers Range

Link

Solution

先舉例 比方說 n=4, m=6 100 101 110 答案是 100 問題可以理解成找出bit表示裡面common的prefix。然後後面用0補上

  public int rangeBitwiseAnd(int m, int n) {
        if(m == 0){
            return 0;
        }
        int i = 0; // right side 0 count
        while(m != n){
            m >>= 1;
            n >>= 1;
            i++;
        }
        return m<<i;
    }

Last updated

Was this helpful?