def rangeBitwiseAnd(self, m, n):

i = 0

while m != n:

m >>= 1

n >>= 1

i += 1

return n << i

------

testcase:

【4,7】

4:0x0100

5:0x0101

6:0x0110

7:0x0111

可以用一个 while 循环来做,但是效率太低,有个非常牛逼的算法,从leetcode上学来的,解释下:

假设头尾的两个数字分别是 m=0bxyz0×××,n=0bxyz1xxx,

其中,也就是说把一个数字做了分解,第一部分是高位两个数字共同的部分,另一部分是低位两个数字差异的部分:

此时,结果值,分成两部分:高位是两个数字高位公共的部分,低位是全0.

好了,为什么是这样?因为这两个值的低位两个数字差异的部分必然能找到0!

这个点算是一个转折点了,也迎来本算法的高潮。也就是说 连续的整数中,低位不同的部分每一个位必然存在0于其间的某个整数中

0x01111111

0x10000000

这个结论不好直接想,但是可以用反证的思维想下,如果找不到这样一个0,那么说明这个连续整数数列是这样的:

0bxyz***1***

0bxyx***1***

0bxyz***1***

0bxyz***1***

obxyz***1***

那一串1,就像是一堵墙一样堵住了连续整数的进位,这样也就限制了连续整数的个数。

当1串位于第0位时,连续整数个数最多为1

当1串位于第1位时,连续整数个数最多为2

当1串位于第2位时,连续整数个数最多为4

python算法:rangeBitwiseAnd(连续整数的与)的更多相关文章

  1. 安装Python算法库

    安装Python算法库 主要包括用NumPy和SciPy来处理数据,用Matplotlib来实现数据可视化.为了适应处理大规模数据的需求,python在此基础上开发了Scikit-Learn机器学习算 ...

  2. python算法(一)

    python算法(一) 一.求数x的因子 x=100 divisors=()#初始化空的元组 for i in range(1,x): if x%i==0: divisors=divisors+(i, ...

  3. Python算法与数据结构--求所有子数组的和的最大值

    Python算法与数据结构--求所有子数组的和的最大值 玄魂工作室-玄魂 玄魂工作室秘书 玄魂工作室 昨天 题目:输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个 ...

  4. Python算法:推导、递归和规约

    Python算法:推导.递归和规约 注:本节中我给定下面三个重要词汇的中文翻译分别是:Induction(推导).Recursion(递归)和Reduction(规约) 本节主要介绍算法设计的三个核心 ...

  5. Python算法(含源代码下载)

    关键字:Python Algorithms Python算法  Mastering Basic Algorithms in the Python Language 使用Python语言掌握基本算法 P ...

  6. python算法题 python123网站单元四题目

    目录 一:二分法求平方根 二:Collatz猜想 三:算24(只考虑满足,不考虑把所有情况找出来)   下面向大家介绍几个python算法题. 一:二分法求平方根 1.题目要求为 2.输入输出格式为 ...

  7. python算法介绍:希尔排序

    python作为一种新的语言,在很多功能自然要比Java要好一些,也容易让人接受,而且不管您是成年人还是少儿都可以学习这个语言,今天就为大家来分享一个python算法教程之希尔排序,现在我们就来看看吧 ...

  8. Java && Python 算法面试常用类以及方法总结

    数据结构 逻辑结构上: 包括集合,线性结构,非线性结构. 存储结构: 顺序存储,链式存储,索引存储,散列存储. Java 常见数据结构 大专栏  Java && Python 算法面试 ...

  9. GitHub标星2.6万!Python算法新手入门大全

    今天推荐一个Python学习的干货. 几个印度小哥,在GitHub上建了一个各种Python算法的新手入门大全,现在标星已经超过2.6万.这个项目主要包括两部分内容:一是各种算法的基本原理讲解,二是各 ...

  10. python算法常用技巧与内置库

    python算法常用技巧与内置库 近些年随着python的越来越火,python也渐渐成为了很多程序员的喜爱.许多程序员已经开始使用python作为第一语言来刷题. 最近我在用python刷题的时候想 ...

随机推荐

  1. atitit.mp4 视频文件多媒体格式结构详解

    atitit.mp4 视频文件多媒体格式结构详解 1. 一.基本概念1 2. MP4文件概述2 3. mp4是由一个个“box”组成的,2 4. 典型简化mp43 5. Fragments5 6. r ...

  2. 文件快速搜索工具-Everything的使用(转)

    首先它是一款基于名称实时定位文件和目录的搜索工具,有以下几个优点: 快速文件索引 快速文件搜索 较低资源占用 轻松分享文件索引 实时跟踪文件更新 通过使用everything小工具,可以提高我们的工作 ...

  3. 转:使用vs2013打开VS2015的工程文件的解决方案(适用于大多数vs低版本打开高版本)

    http://www.cnblogs.com/WayneLiu/p/5060277.html 前言:重装系统前我使用的是vs2015(有点装*),由于使用2015实在在班上太另类了, 导致我想在其他同 ...

  4. PHP读取Excel文件内容

    PHP读取Excel文件内容   项目需要读取Excel的内容,从百度搜索了下,主要有两个选择,第一个是PHPExcelReader,另外一个是PHPExcel.   PHPExcelReader比较 ...

  5. PAT 01-2

    #include<stdio.h> #include<stdlib.h> int main() { int k; int *data; int i; int ThisSum, ...

  6. 关于报malformed or corrupted AST file: 'Unable to load module 的错~

    今天早上 一运行程序 居然报错,我都惊呆了,昨天明明好好的-但是百度是强大的- 报错内容: malformed or corrupted AST file: 'Unable to load modul ...

  7. 去除UITableView中多余的分割线或者隐藏cell间的分割线

    一:去除tableView多余的分割线 首先,自定义一个方法 -(void)setExtraCellLineHidden: (UITableView *)tableView{    UIView *v ...

  8. Javascript中的五种数据类型

    Undefined 未定义.只有一个值undefined Null         只有一个值,null Boolean 在javascript中,只要逻辑表达式不返回undefined不返回null ...

  9. SAM4E单片机之旅——16、NAND Flash读写

    这次大概介绍了一下NAND Flash,以及在ASF中使用它的方法. 一. 接线 这个开发板搭载了一个256 MB,8位的NAND Flash(MT29F2G08ABAEA).引脚接线如下: 偷个懒, ...

  10. 用java程序输出自己的姓名

    代码部分: public class Hello { public static void main(String[] args) { System.out.println("$$$$$$$ ...