leetcode201 Bitwise AND of Numbers Range

求区间内的数字全部与之后的结果

其实可以观察到,只会留下从高到低,第一个不同位之前的

									12 ---- 1100
									11 ---- 1011
									10 ---- 1010
									9  ---- 1001
									8  ---- 1000
									7  ---- 0111
									6  ---- 0110
									5  ---- 0101
									

像这种一位都不会相同

因此代码可以直接删除最低位的1,直到小于等于为止

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

你可能感兴趣的:(数据结构与算法,算法)