leetcode 算法题326 (简单081) 3的幂

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%的用户

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值