leetcode 算法题326 (简单081) 3的幂
- 题目介绍
给定一个整数,写一个函数来判断它是否是 3 的幂次方。
- 示例
输入: 27
输出: true
输入: 0
输出: false
输入: 9
输出: true
输入: 45
输出: false
- 解法一
/**
* @param {number} n
* @return {boolean}
*/
var isPowerOfThree = function(n) {
while(n > 2) {
if(n % 3 !== 0) {
return false;
}
n /= 3;
}
return n === 1;
};
执行用时 : 356 ms, 在所有 JavaScript 提交中击败了58.76%的用户
内存消耗 : 48.6 MB, 在所有 JavaScript 提交中击败了22.44%的用户
- 解法二
/**
* @param {number} n
* @return {boolean}
*/
var isPowerOfThree = function(n) {
if(n < 3) {
return n === 1;
}
if(n % 3 === 0) {
return isPowerOfThree(n / 3);
}
return false;
};
执行用时 : 360 ms, 在所有 JavaScript 提交中击败了54.45%的用户
内存消耗 : 48.3 MB, 在所有 JavaScript 提交中击败了35.90%的用户
- 解法三
/**
* @param {number} n
* @return {boolean}
*/
var isPowerOfThree = function(n) {
if (n < 3) {
return n === 1;
}
let str = n.toString(3);
return str.indexOf(2, 0) === -1 && str.indexOf(1, 1) === -1;
};
执行用时 : 404 ms, 在所有 JavaScript 提交中击败了22.10%的用户
内存消耗 : 49.7 MB, 在所有 JavaScript 提交中击败了5.13%的用户
- 解法四
/**
* @param {number} n
* @return {boolean}
*/
var isPowerOfThree = function(n) {
return n > 0 && 1162261467 % n === 0;
};
执行用时 : 352 ms, 在所有 JavaScript 提交中击败了63.07%的用户
内存消耗 : 48.2 MB, 在所有 JavaScript 提交中击败了41.03%的用户