首页 > 其他 > 详细

Leetcode-231. Power of Two

时间:2016-01-16 11:48:46      阅读:198      评论:0      收藏:0      [点我收藏+]

1.方法一:n&(n-1)=0

/**
 * @param {number} n
 * @return {boolean}
 */
var isPowerOfTwo = function(n) {
    if((n>0) && (!(n&(n-1)))){
        return true;
    }
    else{
        return false;
    }
};

2.方法二:2^x=n;log(2^x)=log(n);xlog(2)=log(n);x=log(n)/log(2);精确范围0.00000000001

  var res=Math.log(n)/Math.log(2);
    if(Math.abs(res - Math.round(res))< 0.0000000001){
        return true;
    }
    else{
        return false;
    }

3.方法三:统计二进制中1的个数必须为1个时,数值为2的幂次方

/**
 * @param {number} n
 * @return {boolean}
 */
var isPowerOfTwo = function(n) {
    var cnt=0;
    while(n>0){
       cnt+=(n&0x01);
        n>>=1;
    }
    if(cnt === 1){
        return true;
    }
    else{
        return false;
    }
};

 

Leetcode-231. Power of Two

原文:http://www.cnblogs.com/Decmber/p/5135172.html

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