方法一:超时
class Solution {
public:
int GetUglyNumber_Solution(int index) {
if(index<=0)
return 0;
int num=0;
int number=0;
while(num!=index)
{
while(number%2==0)
number/=2;
while(number%3==0)
number/=3;
while(number%5==0)
number/=5;
if(number==1)
num++;
number++;
}
return number;
}
};
方法二:
class Solution {
public:
int GetUglyNumber_Solution(int index) {
vector<int> result;
result.push_back(1);
int index2=0,index3=0,index5=0;
int num = 1;
while(num++<index){
int num2 = result[index2]*2;
int num3 = result[index3]*3;
int num5 = result[index5]*5;
int minValue = min(min(num2,num3),num5);
result.push_back(minValue);
if(minValue==num2)
index2++;
if(minValue==num3)
index3++;
if(minValue==num5)
index5++;
}
return result[index-1];
}
};