编写一个程序,找出第 n
个丑数。
丑数就是只包含质因数 2, 3, 5
的正整数。
示例:
输入: n = 10
输出: 12
解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12
是前 10 个丑数。
说明:
1
是丑数。n
不超过1690。
题目标签:Heap / Math / Dynamic Programming
题目链接:LeetCode / LeetCode中国
Language | Runtime | Memory |
---|---|---|
cpp | 112 ms | 22 MB |
class Solution {
public:
// 缓存所有丑数
vector<int> nums;
int nthUglyNumber(int n) {
if (nums.empty()) {
for (long a = 1; a <= INT_MAX; a *= 2) {
for (long b = a; b <= INT_MAX; b *= 3) {
for (long c = b; c <= INT_MAX; c *= 5) {
nums.push_back(c);
}
}
}
sort(nums.begin(), nums.end());
}
return nums[n - 1];
}
};