您的位置:首页 > 其它

LeetCode 201 Bitwise AND of Numbers Range

2016-09-04 22:24 232 查看
Given a range [m, n] where 0 <= m <= n <= 2147483647, return the bitwise AND of all numbers in this range, inclusive.

For example, given the range [5, 7], you should return 4.
思路:介于(包括)m,n之间的所有数字位相与,结果就是m,n的二进制最左边共同的部分。
逐步右移m,n,如果移位后相等,那么再往回左移相应的位数,就是m,n最左边相等的部分。
递归

[java] view
plain copy

 





public int rangeBitwiseAnd(int m, int n) {  

    if (n == m) return n;  

    return rangeBitwiseAnd(m >> 1, n >> 1) << 1;  

}  

迭代:

[java] view
plain copy

 





public int rangeBitwiseAnd(int m, int n) {  

    int count = 0;  

    while (m != n) {  

        m >>= 1;  

        n >>= 1;  

        count++;  

    }  

    return (m << count);  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode