把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。

代码如下:

 1 public class Solution {
 2     public int GetUglyNumber_Solution(int index) {
 3         if(index<=0)
 4             return 0;
 5         int[] num=new int[index];
 6         int dex2=0,dex3=0,dex5=0;
 7         int count=1;
 8         num[0]=1;
 9         int min=0;
10         while(count<index)
11         {
12             min=Math.min(Math.min(num[dex2]*2, num[dex3]*3),num[dex5]*5);
13             if(min==num[dex2]*2)
14                 dex2++;
15             if(min==num[dex3]*3)
16                 dex3++;
17             if(min==num[dex5]*5)
18                 dex5++;
19             num[count++]=min;
20         }
21         return num[index-1];
22     }
23 }