美文网首页
算法:判断2的乘方

算法:判断2的乘方

作者: Caolongs | 来源:发表于2017-12-14 10:02 被阅读3次

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

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

public static boolean isPowerOf2 (int number) {
  int temp = 1;
  while(temp <= number) {
      if(temp == number) {
          return true;
      }
      temp = temp * 2;// (temp = temp << 1;)
  }
  return false;
}

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

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

相关文章

  • 算法:判断2的乘方

    题目:实现一个方法,判断一个正整数是否是2的乘方(比如16是2的4次方,返回True;18不是2的乘方,返回Fal...

  • 漫画:判断 2 的乘方

    小灰陷入了回忆当中…… 题目:实现一个方法,判断一个正整数是否是2的乘方(比如16是2的4次方,返回True;18...

  • 位运算的妙用

    内容来自微信公众号 [算法与数据结构],整理起来,方便查看 判断一个正整数是不是2的乘方 原理图 代码实现 求出一...

  • 初中数学知识点丨3-有理数的乘方

    今天我们讲一下初中数学知识点之有理数的乘方 目录 ↑今天我们讲3个知识点,1.乘方的表示方法; 2.乘方的计算法则...

  • 2的乘方

    n & (n-1) =0

  • 如何判断一个正整数是否是2的乘方

    实现一个方法,判断一个正整数是否是2的乘方(比如16是2的4次方,返回True;否则返回False) 方法一:使用...

  • 积的乘方教学设计

    教学目标: 1.探究并理解积的乘方运算性质,能运用积的乘方运算性质进行计算. 2.在探索积的乘方的运算性...

  • GC

    对象不被引用 判断垃圾的算法: 1.引用计数算法: 1)通过判断对象的引用数量来判断对象是否可以被回收。 2)每个...

  • 求一个正整数转成二进制后,有多少个1?

    之前,看到一个判断一个正数是否是2的乘方(比如16是2的4次方)。要求性能尽可能高。 思路一:从int temp ...

  • 分治法 1

    归并排序 二分查找 乘方问题 Fibonacci 数 朴素算法 其它解法(利用缓存) 在上面那个朴素算法中,当计算...

网友评论

      本文标题:算法:判断2的乘方

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