当我拿到题目的时候,我考虑的是小范围的存储2、3、5 然后分别在除的时候对比,但是这道题的答案验证了我的思路有多么愚蠢。
只需要将这个数不断的取余,如果取余==0 ,除以被取余的数即可。
public class Solution {
public bool IsUgly(int num) {
bool b = false;
while (num >= 2 && num % 2 == 0)
{
num = num / 2;
}
while (num >= 5 && num % 5 == 0)
{
num = num / 5;
}
while (num >= 3 && num % 3 == 0)
{
num = num / 3;
}
if (num == 1)
{
b = true;
}
else
{
b = false;
}
return b;
}
}
今天是2019/1/22日,当我今天再次回顾这道题的时候,在LeetCode网站上执行了一下:
执行用时: 60 ms, 在Ugly Number的C#提交中击败了84.48% 的用户