「每日LeetCode」2021年4月14日

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

Lt326. 3 的幂

326. 3 的幂

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

1
2
输入:n = 27
输出:true

示例 2:

1
2
输入:n = 0
输出:false

示例 3:

1
2
输入:n = 9
输出:true

示例 4:

1
2
输入:n = 45
输出:false

提示:

  • -2 <= n <= 2 - 1

进阶:

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

思路

循环得到。

非循环

10 的幂分别是 1、10、100、1000…2 的幂对应的是 1、2(10)、4(100)、8(1000)…所以 3 的幂对应的也是 10、100、1000。所以把这个数组转化成对应的 3 进制字符,然后用正则判断是否符合规则即可。

解答

1
2
3
4
5
6
7
8
9
10
11
12
/**
* @param {number} n
* @return {boolean}
*/
var isPowerOfThree = function (n) {
if (n <= 0) return false;
while (n > 1) {
if (n % 3 !== 0) return false;
n /= 3;
}
return true;
};

非循环

1
2
3
4
5
6
7
/**
* @param {number} n
* @return {boolean}
*/
var isPowerOfThree = function (n) {
return /^10*$/.test(n.toString(3));
};