美文网首页js相关基础及规范
漫画:判断 2 的乘方

漫画:判断 2 的乘方

作者: 大胡子商人 | 来源:发表于2018-01-02 18:07 被阅读31次

    1 2 3 4

    小灰陷入了回忆当中……

    5 6 7

    题目:实现一个方法,判断一个正整数是否是2的乘方(比如16是2的4次方,返回True;18不是2的乘方,返回False)。要求性能尽可能高。

    8 9

    解法一:

    创建一个中间变量Temp,初始值是1。然后进入一个循环,循环中每次让Temp和目标整数比较,如果相等,则说明目标整数是2的乘方;如果不相等,则让Temp增大一倍,继续循环比较。当Temp大于目标整数时,说明目标整数不是2的乘方。

    如果目标整数的大小是N,则此方法的时间复杂度是O(LogN)。

    10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

    解法二:

    非常有趣也非常简单的解法。因为2的乘方都符合一个规律,即 N&N-1 等于 0,所以直接用这个规律判断即可。该算法时间复杂度是O(1)。

    33 34 35

    思考题:

    实现一个方法,求出一个正整数转换成二进制后的数字“1”的个数。要求性能尽可能高。

    36

    From: http://blog.jobbole.com/107689/

    相关文章

      网友评论

        本文标题:漫画:判断 2 的乘方

        本文链接:https://www.haomeiwen.com/subject/fjelgxtx.html