LeetCode 201. Bitwise AND of Numbers Range

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

v2-d27a2130edd87487d3eeb2d843849359_1440w.jpg

Description



Given a range [m, n] where 0 <= m <= n <= 2147483647, return the bitwise AND of all numbers in this range, inclusive.


Example 1:

Input: [5,7]

Output: 4


Example 2:

Input: [0,1]

Output: 0


描述



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


示例 1:

输入: [5,7]

输出: 4


示例 2:

输入: [0,1]

输出: 0


思路



  • 本题目考察位运算.
  • 相当于求第一个数和最后一个数前缀相同的部分,后面不同的部分用0补齐.


# -*- coding: utf-8 -*-
# @Author:             何睿
# @Create Date:        2019-01-20 21:06:34
# @Last Modified by:   何睿
# @Last Modified time: 2019-01-21 18:21:42
class Solution:
    def rangeBitwiseAnd(self, m, n):
        """
        :type m: int
        :type n: int
        :rtype: int
        """
        diff = 0
        while m - n:
            diff += 1
            m >>= 1
            n >>= 1
        return m << diff


源代码文件在这里.


目录
相关文章
LeetCode 307. Range Sum Query - Mutable
update(i, val) 函数可以通过将下标为 i 的数值更新为 val,从而对数列进行修改。
76 0
LeetCode 307. Range Sum Query - Mutable
LeetCode 304. Range Sum Query 2D - Immutable
给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2)。
76 0
LeetCode 304. Range Sum Query 2D - Immutable
|
索引
LeetCode 303. Range Sum Query - Immutable
给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。
65 0
LeetCode 303. Range Sum Query - Immutable