简单题,一次AC
class Solution {
public:
int nthUglyNumber(
int n) {
std::priority_queue<
int,
std::
vector<int>,
std::greater<
int>> uglyNum;
uglyNum.push(
1);
while(--n)
{
int top=uglyNum.top();
if(INT_MAX/top>=
2)
uglyNum.push(
2*top);
else
uglyNum.push(INT_MAX);
if(INT_MAX/top>=
3)
uglyNum.push(
3*top);
else
uglyNum.push(INT_MAX);
if(INT_MAX/top>=
5)
uglyNum.push(
5*top);
else
uglyNum.push(INT_MAX);
while((!uglyNum.empty())&&uglyNum.top()==top)
uglyNum.pop();
}
return uglyNum.top();
}
};
转载请注明原文地址: https://ju.6miu.com/read-20363.html