题目:
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.
分析:
和之前那个Super Ugly Number一样。。。
话说男神玩儿linux结果把用户目录删了。。。他现在郁闷中。。
代码:
class Solution {
public:
int nthUglyNumber(int n) {
int p[3]={2,3,5};
vector<int> res(n,INT_MAX),rec(3,0);
res[0]=1;
for(int i=1;i<n;++i){
for(int j=0;j<3;++j)res[i]=min(res[i],res[rec[j]]*p[j]);
for(int j=0;j<3;++j)rec[j]+=(res[i]==res[rec[j]]*p[j]);
}
return res[n-1];
}
};