首页 > 其他 > 详细

LeetCode 201. Bitwise AND of Numbers Range

时间:2015-06-19 10:24:20      阅读:197      评论:0      收藏:0      [点我收藏+]

可通过的代码:

class Solution 
{
public:
    int rangeBitwiseAnd(int m, int n) 
    {
        int ret = 0;
        for (int i = 0; m!=0 && n!=0 && i<31; n>>=1, m>>=1, i++)
        {
        	ret += ((m%2!=0)&&m==n? (1<<i): 0);
        }
        return ret;
    }
};

在VS2013下测试成功(n=1, m=1, 输出1),提交到网上测试失败(n=1, m=1, 提示输出0)的代码:

class Solution 
{
public:
    int rangeBitwiseAnd(int m, int n) 
    {
		int ret = 0;
		for (int i = 0; i < 31; ++ i)
		{
			ret |= (((n-m)>(1<<(i+1)) || (n/(1<<i))%2==0 || (m/(1<<i))%2==0)? 0: (1<<i));
		}  
		return 0;     
    }
};


LeetCode 201. Bitwise AND of Numbers Range

原文:http://blog.csdn.net/stephen_wong/article/details/46558569

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!