LeetCode264:Ugly Number II

自己的做法超时了。主要是每次生成一个数据,保存到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];
}

 数据生成和排序一次完成,看了好长时间才看懂 

原文地址:https://www.cnblogs.com/darksied/p/4744362.html