zoukankan      html  css  js  c++  java
  • [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.

    Example 1:

    Input: [5,7]
    Output: 4
    

    Example 2:

    Input: [0,1]
    Output: 0

    题意是给一个范围[m, n],输出这个范围内所有二进制数做AND操作之后的结果。思路是位运算。举个例子,如下是四个连续的数字,

    0100010

    0100011

    0100100

    0100101

    注意,当他们被AND的时候,会发现最低位会变成0。因为两个相邻的数字的最低位一定不一样,所以AND之后的结果只会是0。这样不停地AND之后(同时向右移,假设最后右移了X次好了),到这一步发现前面若干位都是一样的时候,就可以停止了。最后将m向左移动X次,就会得到最后的结果。

    0100xxx

    0100xxx

    0100xxx

    0100xxx

    JavaScript实现

     1 /**
     2  * @param {number} m
     3  * @param {number} n
     4  * @return {number}
     5  */
     6 var rangeBitwiseAnd = function(m, n) {
     7     let offset = 0;
     8     while (m !== n) {
     9         m >>= 1;
    10         n >>= 1;
    11         offset++;
    12     }
    13     return m << offset;
    14 };

    Java实现

     1 class Solution {
     2     public int rangeBitwiseAnd(int m, int n) {
     3         int offset = 0;
     4         while (m != n) {
     5             m >>= 1;
     6             n >>= 1;
     7             offset++;
     8         }
     9         return m << offset;
    10     }
    11 }

    LeetCode 题目总结

  • 相关阅读:
    es6-箭头函数
    高度自适应的div
    移动端css水平垂直居中
    跨域2-常用的跨域方式
    跨域1-CORS跨域
    前端路由分类
    K8S系列-2.常用命令
    Git多分支管理
    微服务-01初识
    VirtualBox虚拟Centos磁盘文件扩容
  • 原文地址:https://www.cnblogs.com/cnoodle/p/11689910.html
Copyright © 2011-2022 走看看