Lintcode142 O(1) Check Power Of 2 solution 题解

【题目描述】

Using O(1) time to check whether an integernis a power of2.

用O(1) 时间检测整数n是否是2的幂次。

【题目链接】

www.lintcode.com/en/problem/o1-check-power-of-2/

【题目解析】

简单点来考虑可以连除2求余,看最后的余数是否为1,但是这种方法无法在 O(1) 的时间内解出,所以必须要想点别的办法。2的整数幂若用二进制来表示,则其 中必只有一个1,其余全是0,那么怎么才能用一个式子把这种特殊的关系表示出来了?传统的位运算如按位与、按位或和按位异或等均无法直接求解,比较下x - 1和x的关系试试.以x=4为例。

0100 ==> 4

0011 ==> 3

两个数进行按位与就为0了.如果不是2的整数幂则无上述关系,反证法可证之。

【参考答案】

www.jiuzhang.com/solutions/o1-check-power-of-2/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值