把只包含因子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 }
浙公网安备 33010602011771号