判断一个数为2的整数次幂

2021-05-16  本文已影响0人  CXY_XZL

方法一

解题思路:一个数为2的整数次幂,那么它必将被2整除
代码如下:

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

public static void main(String[] args){
  System.out.println(isPowerOf2(32));
  System.out.println(isPowerOf2(33));
}

以上算法时间复杂度为O(logn),但还有更好的办法,如下:


方法二

解题思路:8为2的整数次幂,转换为二进制为1000,在二进制的基础上减一后结果是111,而1000 & 111 在位运算中结果为0,总结如下表:

示例.png

代码如下:

public static boolean isPowerOf2(int num){
  return (num&num-1) == 0;
}

补充:此方法时间复杂度为O(1)

上一篇 下一篇

猜你喜欢

热点阅读