题目描述:
代码:
class Solution {
public:
int nthUglyNumber(int n) {
int ugly[1690];
ugly[0]=1;
int i=0,j=0,k=0;
int a,b,c;
int num=1;
while(num<1690){
a=ugly[i]*2;
b=ugly[j]*3;
c=ugly[k]*5;
if(a<=b&&a<=c){
i++;
ugly[num]=a;
if(b==a) j++;
if(c==a) k++;
}
else if(b<=c){
j++;
ugly[num]=b;
if(b==a) i++;
if(b==c) k++;
}
else{
k++;
ugly[num]=c;
if(a==c) i++;
if(b==c) j++;
}
num++;
}
return ugly[n-1];
}
};
运行结果:
总结:
采用了三指针法,并且不同指针产生的数相同时,都要往后移