其他分享
首页 > 其他分享> > leetcode 201. 数字范围按位与(Bitwise AND of Numbers Range)

leetcode 201. 数字范围按位与(Bitwise AND of Numbers Range)

作者:互联网

目录

题目描述:

给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。

示例 1:

输入: [5,7]
输出: 4

示例 2:

输入: [0,1]
输出: 0

解法:

class Solution {
public:
    int rangeBitwiseAnd(int m, int n) {
        int step = 0;
        while(m != n){
            m >>= 1;
            n >>= 1;
            step++;
            if(m == 0 || n == 0){
                return 0;
            }
        }
        int res = m;
        while(step--){
            res <<= 1;
        }
        return res;
        // 11
        // 00 + 1 = 01
        // get the right-most one: n&(~n + 1)
        // get the left-most one: reset the right-most one, and the recycle
    }
};

标签:201,示例,int,res,step,Bitwise,while,Range,解法
来源: https://www.cnblogs.com/zhanzq/p/10842626.html