LeetCode 201. 数字范围按位与

LeetCode 201. 数字范围按位与

思路:模拟一遍L-R进行与运算的结果可以发现L,R的二进制位从高到低第一个不相同的位置后面全是0。我们只需要判断前面二进制位是否为1并转为10进制数

代码:

class Solution {
public:
    int rangeBitwiseAnd(int left, int right) {
        int res=0;
        for(int i=30;i>=0;i--){
            if((left>>i&1)!=(right>>i&1)) break;
            if((left>>i&1)) res+=1<<i;
        }
        return res;

    }
};
上一篇:papamelon 201. 部分和问题


下一篇:gcc警告: warning: dereferencing type-punned pointer will break strict-aliasing rules