[LeetCode] 201. 数字范围按位与

题目链接:https://leetcode-cn.com/problems/bitwise-and-of-numbers-range/

题目描述:

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

示例:

示例 1:

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

示例 2:

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

思路:

因为 只要有一个0,那么无论有多少个 1都是 0

比如:从 57

5:0 1 0 1
6:0 1 1 0
7:0 1 1 1
-----------
  0 1 0 0

所以,代码如下:

class Solution:
    def rangeBitwiseAnd(self, m: int, n: int) -> int:
        i = 0
        while m != n:
            m >>= 1
            n >>= 1
            i += 1
        return m << i

原文地址:https://www.cnblogs.com/powercai/p/11370280.html

时间: 2024-11-05 13:11:28

[LeetCode] 201. 数字范围按位与的相关文章

leetcode 201. 数字范围按位与 解题报告

给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点). 示例 1: 输入: [5,7] 输出: 4 示例 2: 输入: [0,1] 输出: 0 思路分析 由于是按位与,那么某位一旦出现0,结果该位肯定是0.所以只需要考虑m,n都是1的位置.那么直接从高位开始,往低位走,直到遇到该为的数字不相等,将其后的数为都置为0,即为[m,n]之间所有的数字按位与的结果.代码如下 #include<bits/st

[Swift]LeetCode201. 数字范围按位与 | Bitwise AND of Numbers Range

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,返回此范围内所有数字

leetcode consecutive-numbers 数字连续出现次数大于三次的数字

题目详情参见: https://leetcode.com/problems/consecutive-numbers/ 难度也只是medium,中等难度,阅读题意,也只是统计一下数字连续出现次数大于3次,例如,1,1,1,2,2,1 在这个序列中,只有1 连续出现了3次,最后显示1 即可,注意排除重复数字,即1 可能 1,1,1,2,2,1,1,1,1,这种情况下,显示一个1即可,在sql语句中添加 distinct过滤重复记录即可. 关键:定义变量统计数字的连续计数. select distin

number to string - LeetCode【数字 =&gt; 字符串】

228. Summary Ranges 让我们找出连续的序列,然后首尾两个数字之间用个"->"来连接,那么我只需遍历一遍数组即可,每次检查下一个数是不是递增的,如果是,则继续往下遍历,如果不是了,我们还要判断此时是一个数还是一个序列,一个数直接存入结果,序列的话要存入首尾数字和箭头"->".我们需要两个变量i和j,其中i是连续序列起始数字的位置,j是连续数列的长度,当j为1时,说明只有一个数字,若大于1,则是一个连续序列

Leetcode 476.数字的补数

数字的补数 给定一个正整数,输出它的补数.补数是对该数的二进制表示取反. 注意: 给定的整数保证在32位带符号整数的范围内. 你可以假定二进制数不包含前导零位. 示例 1: 输入: 5 输出: 2 解释: 5的二进制表示为101(没有前导零位),其补数为010.所以你需要输出2. 示例 2: 输入: 1 输出: 0 解释: 1的二进制表示为1(没有前导零位),其补数为0.所以你需要输出0. [思路] 如果我们能知道该数最高位的1所在的位置,就可以构造一个长度和该数据所占位置一样长的一个掩码mas

LeetCode - 字符串数字相乘与相加

43. 字符串相乘 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 示例 1: 输入: num1 = "2", num2 = "3" 输出: "6" 示例 2: 输入: num1 = "123", num2 = "456" 输出: "56088" 说明: num1 和 num2 的长度小于110. num1

[LeetCode#201] Bitwise AND of Numbers Range

Problem: 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 idea behind this problem is not hard, you could

【LeetCode 201】Bitwise AND of Numbers Range

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] 范围内个数,返回范围内所有数相与的结果. 思路: 如果打着暴力的旗号,那么这个题是会超时的 - -!.最后也是没

leetcode 201. Bitwise AND of Numbers Range(位运算,dp)

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. 如果m<n,那么二进制最右边一位在最后的结果中肯定是0,那么就可以转化成子问题: rangeBi