class Solution {
public:
//数只有2、3、5构成,可以利用前面的数生成后面的数,开始只有丑数1,通过乘2、3、5,来得到下一个丑数
int GetUglyNumber_Solution(int index) {
int i=0, j=0, k=0, now;
vector<int> v(1, 1);
while( v.size() < index ){
now = min( v[i]*2, min(v[j]*3, v[k]*5) ); //得到下一个丑数
v.push_back(now);
if( v[i]*2==now )i++; //移动数,如果加入了数组,则对下一个数乘得到丑数,下一轮再取三个数的最小数;
if( v[j]*3==now )j++;
if( v[k]*5==now )k++;
}
return v[index-1];
}
};

京公网安备 11010502036488号