Power of Two

很简单···判断一个整数是否是2的次方
自己写的办法就是傻傻的递归除以2
代码:

public class Solution {
    public boolean isPowerOfTwo(int n) {
        if(n==1){
            return true;
        }
        if(n==0){
            return false;
        }
        if(n%2!=0){
            return false;
        }

       return  isPowerOfTwo(n/2);
    }
}

其实还有更简单的办法
如果一个数是2的次方,那他的二进制形式就是:100000···
那么他-1的数的二进制形式就是:011111····
相与之后肯定是全0

于是有了这段一行的代码:

public class Solution {
public boolean isPowerOfTwo(int n) {//if n is power  of  2 ,n just has one bit is 1
    return n>0 && (n&(n-1))==0;
}
}

这几天都在做有关二进制啊,位操作啊之类的问题,还好以前C语言都学过,刷这些题无非就是想在大四的时候找工作的时候有些底气,虽然很功利,但是确实有些人想出来的解决方法让我感叹!
Keep Going On!连续了10多天了,听说21天就可以养成一个习惯的哦···快到21天啊,已经越来越懒了···

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值