lzyprime 博客 (github)
創(chuàng)建時(shí)間:2021.04.10
qq及郵箱:2383518170
leetcode 筆記
題目描述
給你一個(gè)整數(shù) n 思瘟,請(qǐng)你判斷 n 是否為 丑數(shù) 荸百。如果是,返回 true 滨攻;否則够话,返回 false 。
丑數(shù) 就是只包含質(zhì)因數(shù) 2光绕、3 和/或 5 的正整數(shù)女嘲。
示例 1:
輸入:n = 6
輸出:true
解釋:6 = 2 × 3
示例 2:
輸入:n = 8
輸出:true
解釋:8 = 2 × 2 × 2
示例 3:
輸入:n = 14
輸出:false
解釋:14 不是丑數(shù),因?yàn)樗肆硗庖粋€(gè)質(zhì)因數(shù) 7 诞帐。
示例 4:
輸入:n = 1
輸出:true
解釋:1 通常被視為丑數(shù)欣尼。
提示:
-231 <= n <= 231 - 1
來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/ugly-number
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán)停蕉,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處媒至。
code
-
c++
class Solution {
public:
bool isUgly(int n) {
if (n <= 0) return false;
int arr[] = {2, 3, 5};
for (int i : arr) while (n % i == 0) n /= i;
return n == 1;
}
};
-
kotlin
一刀流,每次會(huì)有array(2, 3, 5)
內(nèi)存回收谷徙,和find{ n % it == 0 }
的額外開(kāi)銷(xiāo)。
class Solution {
tailrec fun isUgly(n: Int): Boolean = when {
n <= 0 -> false
n == 1 -> true
else -> when (val i = arrayOf(2, 3, 5).find { n % it == 0 }) {
null -> false
else -> isUgly(n / i)
}
}
}
常規(guī):
class Solution {
fun isUgly(n: Int): Boolean = when {
n <= 0 -> false
n == 1 -> true
else -> arrayOf(2, 3, 5).fold(n){ acc, i ->
var r = acc
while (r % i == 0) r /= i
r
} == 1
}
}
-
scala
object Solution {
def isUgly(n: Int): Boolean = n match {
case 0 => false
case 1 => true
case _ => Seq(2, 3, 5).foldLeft(n) { (acc, i) =>
var r = acc
while (r % i == 0) r /= i
r
} == 1
}
}
-
rust
rust 一刀流正合適
vec![2, 3, 5].iter().fold(n, |mut acc, i|{ while acc % i == 0 {acc /= i}; acc}) == 1
impl Solution {
pub fn is_ugly(mut n: i32) -> bool {
match n {
0 => false,
1 => true,
_ => {
vec![2, 3, 5].iter().fold(n, |mut acc, i| {
while acc % i == 0 {
acc /= i
}
acc
}) == 1
}
}
}
}