LeetCode342.4的幂
发布日期:2021-05-14 23:50:51 浏览次数:17 分类:精选文章

本文共 909 字,大约阅读时间需要 3 分钟。

如何判断一个数是否是4的幂?

在编程中,判断一个数是否为4的幂数可能是一个常见的需求。下面将介绍两种常用的解决方法。

方法一:循环除法方法

这个方法通过不断将数字除以4,直到无法再继续除以4,最后检查结果是否等于1。具体操作如下:

bool isPowerOfFour(int num) {
while (num % 4 == 0 && num != 0) {
num /= 4;
}
return num == 1;
}

这种方法的逻辑非常简单,适用于大多数情况。然而,当输入的数字非常大时,循环的次数可能会非常多,影响性能表现。

方法二:位运算方法

使用位运算可以更高效地解决这个问题。对于一个数是4的幂的情况,其二进制表示有着特殊的性质。具体来说,一个数如果是4的幂,那么它的二进制表示中只有奇数位(从右数,第一位是第1位)上有1。

bool isPowerOfFour(int num) {
if (num <= 0)
return false;
if ((num & (num - 1)) != 0)
return false;
if ((num & 0x55555555) == num)
return true;
return false;
}

这一方法的思路是:首先检查数是否为非负数(因为4的任何次幂都不可能是负数),然后检查数是否为二次幂数(i.e., 形如(4^k))。对于是否是二次幂数的情况,可以通过判断(num & (num - 1))是否为0来判断,条件是否满足。

如果数已经确认为二次幂数,那么我们需要进一步判断它是否为4的幂数。对于一个数是4的幂数的情况,其二进制表示中只有奇数位上有1。我们可以通过对这个数与mask 0x55555555(二进制为101010...1010)进行按位与运算,检查结果是否等于原数。

这种方法的时间复杂度为O(1),非常高效,适用于所有情况。

这些都是判断数是否为4的幂数的常用方法。选择哪一种方法取决于具体的应用场景和性能要求。

上一篇:LeetCode191.位1的个数
下一篇:LeetCode268.缺失的数

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月23日 12时04分36秒