链接:
若m = n,结果显然就是m;若m < n,则从m加到n的过程中,最低位一定经历过1和0,AND后最低位为0,rangeBitwiseAnd(m,n) = rangeBitwiseAnd(m>>1, n>>1) << 1。
class Solution {
public:
int rangeBitwiseAnd(int m, int n) {
int shf = 0;
while(m < n) {
shf++;
m >>= 1;
n >>= 1;
}
return m << shf;
}
};