LeetCode题目-200

首页 编程分享 LEET_CODE 正文

leetCode 转载 编程分享 2019-08-09 12:45:40

简介 LeetCode题目-200


✏Leetcode之PHP版题目解析(201. Bitwise AND of Numbers Range)


✏描述

这道题求[m,n]区间的按位与运算。


✏题目实例

✏题目分析

首先,0 和任何数相与都是0。也正是demo2的结果。那就看看几个demo。

给定[5,7]
5的二进制101
6的二进制110
7的二进制111
最终相与的结果就是100 转换为十进制即4


[20,23]
20     10100
21     10101
22     10110
23     10111
结果    10100   = 20


你可以看出这样的运算最后的结果就是求二进制左边公共的部分。如果不相等,使二进制的末位加1, 二进制进一位,只要进位说明末尾有0的存在,不断右移两个数进行比较,等到相等的时候,说明当前两个数最高位已经没有变化了,记录下位移的次数,左移相同位数即可。

 /**
     * @param Integer $m
     * @param Integer $n
     * @return Integer
     */
    function rangeBitwiseAnd($m, $n) {
       $count=0;
        while($m !=$n){
            $m>>=1;
            $n>>=1;
            $count++;
        }
        $n<<=$count;
        return $n;
    }   


转载链接:https://leetcode.cn/


Tags:


本篇评论 —— 揽流光,涤眉霜,清露烈酒一口话苍茫。


    声明:参照站内规则,不文明言论将会删除,谢谢合作。


      最新评论




ABOUT ME

Blogger:袅袅牧童 | Arkin

Ido:PHP攻城狮

WeChat:nnmutong

Email:nnmutong@icloud.com

标签云