LeetCode 342. 4的幂

题目描述

342. 4的幂

思路分析

解法一:位运算判定(推荐)

核心思路

  • 4 的幂必须是正数,且二进制中只有一位为 1。
  • 这一位必须落在奇数位(1、3、5…),可用掩码 0x55555555 判定。


复杂度分析

  • 时间复杂度:O(1)。
  • 空间复杂度:O(1)。
class Solution {
    public boolean isPowerOfFour(int n) {
        if (n <= 0) {
            return false;
        }

        // 只有一位为 1
        if ((n & (n - 1)) != 0) {
            return false;
        }

        // 1 必须出现在奇数位
        return (n & 0x55555555) != 0;
    }
}
func isPowerOfFour(n int) bool {
	if n <= 0 {
		return false
	}

	// 只有一位为 1
	if n&(n-1) != 0 {
		return false
	}

	// 1 必须出现在奇数位
	return n&0x55555555 != 0
}

相似题目

题目 难度 考察点
231. 2 的幂 简单 位运算
326. 3 的幂 简单 数学
191. 位1的个数 简单 位运算
201. 数字范围按位与 中等 位运算
461. 汉明距离 简单 位运算
本文作者:
本文链接: https://hgnulb.github.io/blog/2022/73812732
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!