[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.

思路

[5, 7]里共有三个数字(5,6,7),二进制分别为:

1 01  1 10  1 11

相与后的结果为100

[9, 11]里共有三个数字(9,10,11),二进制分别为:

1 001  1 010  1 011

相与后的结果为1000

[26, 30]里共有五个数字(26,27,28,29,30),二进制分别为:

11 010  11 011  11 100  11 101  11 110

相与后的结果为11000

仔细观察我们可以得出,我们要求出的结果就是给定范围内所有数的左边公共1的部分,其他位都为0。

代码

/*---------------------------------------
*   日期:2015-04-26
*   作者:SJF0115
*   题目: 201.Bitwise AND of Numbers Range
*   网址:https://leetcode.com/problems/bitwise-and-of-numbers-range/
*   结果:AC
*   来源:LeetCode
*   博客:
-----------------------------------------*/
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

class Solution {
public:
    int rangeBitwiseAnd(int m, int n) {
        if(m == 0){
            return 0;
        }//if
        int count = 0;
        while(m != n){
            // 左移一位
            m >>= 1;
            n >>= 1;
            ++count;
        }//while
        return m << count;
    }
};

int main(){
    Solution solution;
    int m = 9;
    int n = 11;
    int result = solution.rangeBitwiseAnd(m,n);
    // 输出
    cout<<result<<endl;
    return 0;
}

运行时间

时间: 2025-01-27 14:43:21

[LeetCode]201.Bitwise AND of Numbers Range的相关文章

[LeetCode] 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. 解题思路 ① n&(n-1),可以去除n的最低位的1. ② 从n一直与到m,可以去掉的1就是n和m的右端不相等的部分的1. 例如对于

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.   我们先从题目中给的例子来分析,[5, 7]里共有三个数字,分别写出它们的二进制为: 101 110 111 相与后的结果为100,仔细观

[经典面试题]位运算操作

[LeetCode]136.Single Numbe [LeetCode]201.Bitwise AND of Numbers Range [剑指Offer]40.数组中只出现一次的数字 一道位运算的算法题

LeetCode All in One 题目讲解汇总(持续更新中...)

终于将LeetCode的免费题刷完了,真是漫长的第一遍啊,估计很多题都忘的差不多了,这次开个题目汇总贴,并附上每道题目的解题连接,方便之后查阅吧~ 如果各位看官们,大神们发现了任何错误,或是代码无法通过OJ,或是有更好的解法,或是有任何疑问,意见和建议的话,请一定要在对应的帖子下面评论区留言告知博主啊,多谢多谢,祝大家刷得愉快,刷得精彩,刷出美好未来- 博主制作了一款iOS的应用"Leetcode Meet Me",里面有Leetcode上所有的题目,并且贴上了博主的解法,随时随地都能

python使用range函数计算一组数和的方法

  这篇文章主要介绍了python使用range函数计算一组数和的方法,涉及Python中range函数的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了python使用range函数计算一组数和的方法.分享给大家供大家参考.具体如下: ? 1 2 3 4 5 sum = 0 numbers = range(1,10) for i in numbers: sum += i print(sum) 运行结果为:45 希望本文所述对大家的Python程序设计有所帮助.       

《从问题到程序:用Python学编程和计算》——第3章 基本编程技术 3.1 循环程序设计

第3章 基本编程技术 第2章讨论了简单的计算和编程,展示了一些实例.通过对有关内容的学习,读者应该已经做了一些简单程序,对写程序和做计算有了些实际体会.虽然编程中细节较多,但也是很有趣的工作.为了完成一个程序,首先要分析问题.寻找解决方案,这些需要发挥人的聪明才智和想象力,也可能涉及一些相关领域的知识.要把设计变成可以运行的程序,既需要智力,也需要有条理的工作,一个小错误就可能使程序不能正确执行.当然,高度精确性也是现代社会对人的基本要求,写程序的过程能给我们许多有益的经验. 学习编程要经历一个

python编码最佳实践之总结

该文章转自阿里巴巴技术协会(ATA) 作者:空溟    相信用python的同学不少,本人也一直对python情有独钟,毫无疑问python作为一门解释性动态语言没有那些编译型语言高效,但是python简洁.易读以及可扩展性等特性使得它大受青睐.      工作中很多同事都在用python,但往往很少有人关注它的性能和惯用法,一般都是现学现用,毕竟python不是我们的主要语言,我们一般只是使用它来做一些系统管理的工作.但是我们为什么不做的更好呢?python zen中有这样一句:There s

将IP地址转换为长整型、将长整型转换为IP地址

ip地址|转换 将IP地址转换为长整型 Converts a string ip address ("192.168.0.1") to a Long number (3232235521). One of the reasons to do this would be to store IP addresses in databases. Numbers greatly reduce the size required to store this information. Inputs

动态网页技术PHP的数组处理函数库

array :  建立一个新的数组.  array_walk :  让用户自订函数能处理数组中的每一个元素.  arsort :  将数组的值由大到小排序.  asort :  将数组的值由小到大排序.  count :  计算变量或数组中的元素个数.  current :  返回数组中目前的元素.  each :  返回数组中下一个元素的索引及值.  end :  将数组的内部指针指到最后的元素.  key :  取得数组中的索引资料.  ksort :  将数组的元素依索引排序.  list