0%

LeetCode-Day36

264. 丑数II

编写一个程序,找出第 n 个丑数。

丑数就是只包含质因数 2, 3, 5 的正整数。

示例:

1
2
3
4
5
6
输入: n = 10
输出: 12
解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。
说明:
1 是丑数。
n 不超过1690。

思路:动态规划

每次都找已经存在的数中 * 2或 * 3 或 * 5之后较小的值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
public:
int nthUglyNumber(int n) {
vector<int> res(1, 1);
int i2 = 0, i3 = 0, i5 = 0, i = 1;
while(i++ < n) {
int tmp = min(2 * res[i2], min(3 * res[i3], 5 * res[i5]));
res.push_back(tmp);
if(tmp == 2 * res[i2]) i2++;
if(tmp == 3 * res[i3]) i3++;
if(tmp == 5 * res[i5]) i5++;
}
return res.back();
}
};