博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
201. Bitwise AND of Numbers Range
阅读量:6313 次
发布时间:2019-06-22

本文共 814 字,大约阅读时间需要 2 分钟。

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

难度:medium

题目:

给定范围 [m, n] 0 <= m <= n <= 2147483647, 返回这个范围内所有数的与计算结果。

思路:

m 到 n 之间所有数的位与计算,可归结为找出最左边的不同的位即(1, 0) (0, 1),然后把当前位与之后的位都置成0.
例如,二进制数

ABCD EFGH IGKL MN1001 0001 1000 01,1010 0110 1010 00

最左边的不同位为C位,C位及C位之后的位都必然经过0,1 之间的变换,因此位与计算就等于将C位及之后的所有位置成0.

Runtime: 5 ms, faster than 100.00% of Java online submissions for Bitwise AND of Numbers Range.

class Solution {    public int rangeBitwiseAnd(int m, int n) {        int result = m & n;        for (int i = 0; m != n; i++, m >>= 1, n >>= 1) {            if (1 == ((m ^ n) & 1)) {                result = result >> i << i;            }        }        return result;    }}

转载地址:http://zcexa.baihongyu.com/

你可能感兴趣的文章
异步编程的世界
查看>>
最近话题火爆的四件事你知道不?
查看>>
SpringBoot整合MyBatis
查看>>
云计算产业如何率先推行信用管理?
查看>>
Android 类库书签更新(一)
查看>>
Unity3D Input按键系统
查看>>
简单的一条SQL,不简单的做事思维 NOT IN 、NOT EXISTS、LEFT JOIN用法差别 ...
查看>>
DataWorks:任务未运行自助排查
查看>>
ionic/cordova热部署
查看>>
「镁客早报」特斯拉裁员,马斯克解释没有办法;微软推出Azure DevOps赏金计划...
查看>>
centos 7.4 使用 pgxc_ctl 安装与使用
查看>>
Redis 单key值过大 优化方式
查看>>
【数据库】表分区
查看>>
nutz-sqltpl 1.3.4.RELEASE 发布,在 Nutz 项目中“解决 Java 拼接 SQL”问题
查看>>
城市 | 800个地铁站数据透析的京沪白领图鉴:隐形土豪、无产中产阶级和猪猪女孩...
查看>>
前端脚本!网站图片素材中文转英文
查看>>
linux的常用易忘命令
查看>>
PHP 分割字符串
查看>>
java 基于QRCode、zxing 的二维码生成与解析
查看>>
关于职业规划的一些思考
查看>>