您的位置:首页 > 其它

[Leetcode] #263#264 Ugly Number I & II

2017-05-07 13:12 281 查看

Discription

Write a program to check whether a given number is an ugly number.Ugly numbers are positive numbers whose prime factors only include 
2, 3, 5
. For example, 
6, 8
 are ugly while
14
 is not ugly since it includes another prime factor 
7
.Note that 
1
 is typically treated as an ugly number.

Solution

bool isUgly(int num) {
while (num % 2 == 0 && num)
num /= 2;
while (num % 3 == 0 && num)
num /= 3;
while (num % 5 == 0 && num)
num /= 5;
return num == 1;
}

Discription

Write a program to find the 
n
-th ugly number.Ugly numbers are positive numbers whose prime factors only include 
2, 3, 5
. For example, 
1, 2, 3, 4, 5, 6, 8, 9, 10, 12
 is the sequence of the first 
10
 ugly numbers.Note that 
1
 is typically treated as an ugly number, and n does not exceed 1690.

Solution

int nthUglyNumber(int n) {
vector<int> res(n, 1);
int index2 = 0, index3 = 0, index5 = 0;
for (int i = 1; i<n; i++) {
res[i] = min(min(res[index2] * 2, res[index3] * 3), res[index5] * 5);
if (res[i] == res[index2] * 2) index2++;
if (res[i] == res[index3] * 3) index3++;
if (res[i] == res[index5] * 5) index5++;
}
return res[n - 1];
}
GitHub-Leetcode: https://github.com/wenwu313/LeetCode
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: