标签:
自己的做法超时了。主要是每次生成一个数据,保存到list中,然后对List重新排序。排序太耗费时间
记录下讨论组里的写法
public int NthUglyNumber(int n) {
int[] ugly = new int[n];
ugly[0] = 1;
int index2 = 0, index3 = 0, index5 = 0;
int factor2 = 2, factor3 = 3, factor5 = 5;
for(int i=1;i<n;i++){
int min = Math.Min(Math.Min(factor2,factor3),factor5);
ugly[i] = min;
if(factor2 == min)
factor2 = 2*ugly[++index2];
if(factor3 == min)
factor3 = 3*ugly[++index3];
if(factor5 == min)
factor5 = 5*ugly[++index5];
}
return ugly[n-1];
}
数据生成和排序一次完成,看了好长时间才看懂
标签:
原文地址:http://www.cnblogs.com/darksied/p/4744362.html