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];
    }
};