「每日LeetCode」2021年9月11日

本文最后更新于:2023年3月19日 晚上

Lt342. 4 的幂

342. 4 的幂

给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。
整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x示例 1:
输入:n = 16 输出:true
示例 2:
输入:n = 5 输出:false
示例 3:
输入:n = 1 输出:true
提示:

  • -231 <= n <= 231 - 1

进阶:

  • 你能不使用循环或者递归来完成本题吗?

思路

因为是 4 的幂数,所以 1 一定在奇数位上,从 1 开始每次将 1 向左移动两位就可以得到幂数。为了防止溢出,用二进制字符串进行比较即可,模拟每次向左移动两位添加“10”。

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
/**
* @param {number} n
* @return {boolean}
*/
var isPowerOfFour = function (n) {
const binary = n.toString(2);
const length = binary.length;
let num = "1";
while (num.length < length) {
num = "10" + new Array(num.length).fill(0).join("");
}
return num.length % 2 !== 0 && binary == num;
};