20210410 LeetCode 每日一题(丑数)

190 阅读1分钟

题目描述

原题链接:丑数

给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。

丑数 就是只包含质因数  2、3 和/或  5  的正整数。

示例

输入:n = 6
输出:true
解释:6 = 2 × 3
输入:n = 14
输出:false
解释:14 不是丑数,因为它包含了另外一个质因数 7

解答

如果输入的数能被 2 整除,那就将它除以 2; 如果输入的数能被 3 整除,那就将它除以 3; 如果输入的数能被 5 整除,那就将它除以 5; 再处理下边界情况,当数小于或等于 1 时返回 true,其他情况返回 false 即可:

/**
 * @param {number} n
 * @return {boolean}
 */
var isUgly = function (n) {
  if (n <= 0) return false
  while (n % 2 === 0) {
    n /= 2
  }
  while (n % 3 === 0) {
    n /= 3
  }
  while (n % 5 === 0) {
    n /= 5
  }
  return n === 1
}

复杂度分析:

  • 时间复杂度:O(logN)
  • 空间复杂度:O(1)