Write a program to find the n-th ugly number.
Ugly numbers are positive numbers whose prime factors only include 2, 3, 5.
Example:
Input: n = 10
Output: 12
Explanation: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 is the sequence of the first 10 ugly numbers.
Note:
1 is typically treated as an ugly number.
n does not exceed 1690.
一开始用优先队列,大佬们都是维护三个最小指针。。
typedef long long LL;
priority_queue<LL,vector<LL>, greater<LL>>q;
unordered_map<LL,int>dict;
class Solution {
public:
int nthUglyNumber(int n) {
if(n==0)return 0;
int a[n+1];
a[1]=1;
int l1=1, l2=1, l3=1;
for(int i=2;i<=n;i++)
{
a[i]=min(a[l1]*2,min(a[l2]*3,a[l3]*5));
if(a[i]==a[l1]*2)l1++;
if(a[i]==a[l2]*3)l2++;
if(a[i]==a[l3]*5)l3++;
}
return a[n];
}
};