leetcode Bitwise AND of Numbers Range

来源:互联网 发布:淘宝换货来回运费谁出 编辑:程序博客网 时间:2024/06/05 17:14

题目链接

不得不说。我的位操作真的不是很好。碰到位操作的题目就不会。注定不能做硬件程序员。。

思路:(是看了别人的代码才有的思路,不然我就用循环做了)
其实从m到n。。。我们可以想象,只有m和n的二进制公共前缀起作用。因为从m到n。公共前缀后面的每一位都会出现0.这样与出来的结果就是0.所以我们只要找到m,n的二进制公共前缀就好。

public class Solution {    public int rangeBitwiseAnd(int m, int n) {        int bitmove=0;        while(m!=n)        {            m>>=1;            n>>=1;            bitmove++;        }        return n<<bitmove;    }}
0 0
原创粉丝点击