int GetUglyNumber_Solution(int index)
{
if(index<7)
return index;
vector<int> ugly(index);
int p2=0,p3=0,p5=0;
ugly[0]=1;
for(int i=1;i<index;++i)
{
ugly[i] = min(min(ugly[p2] * 2, ugly[p3] * 3), ugly[p5] * 5);
if(ugly[i]==ugly[p2]*2)p2++;
if(ugly[i]==ugly[p3]*3)p3++;
if(ugly[i]==ugly[p5]*5)p5++;
}
return ugly[index-1];
}
每次我们只用比较3个数:用于乘2的最小的数、用于乘3的最小的数,用于乘5的最小的数。
脑子有问题,最小的数总是理解不能,先记下来把