LeetCode #201: Bitwise AND of Numbers Range

来源:互联网 发布:网络剧河神百度云资源 编辑:程序博客网 时间:2024/05/20 12:50

Problem Statement

(Source) 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.

Analysis

The result is the longest common prefix (left-padding using 0’s) of binary representations of m and n.

Solution 1

class Solution(object):    def rangeBitwiseAnd(self, m, n):        """        :type m: int        :type n: int        :rtype: int        """        while m < n:            n &= n-1        return n

Solution 2

class Solution(object):    def rangeBitwiseAnd(self, m, n):        """        :type m: int        :type n: int        :rtype: int        """        p = 0        while m != n:            m >>= 1            n >>= 1            p += 1        return m << p
0 0
原创粉丝点击