算法:Java实现判断一个数是否是2的N次方
Posted chenry777
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法:Java实现判断一个数是否是2的N次方相关的知识,希望对你有一定的参考价值。
比如2 4 8 16,是的;6 10 不是的。就看这个数是不是可以拆成N个2相乘。
解法一:暴力解法,循环,
public static boolean solution1(int x) {
// 4 6 16 是2的n次方 , 15 不是
if (x == 0 || x == 1) {
return true;
}
while (x > 1) {
int i = (x % 2 == 0) ? (x /= 2) : (x = 0);
}
if (x == 1) return true;
return false;
}
时间复杂度:O(log(n))
解法二:&运算
小知识: 若 x 满足 x = 2^n, 则 x & (x - 1) == 0
public static boolean solution2(int x) {
// 4 6 16 是2的n次方 , 15 不是
if ((x & (x - 1)) == 0) return true;
return false;
}
时间复杂度:O(1)
以上是关于算法:Java实现判断一个数是否是2的N次方的主要内容,如果未能解决你的问题,请参考以下文章