Ugly numbers are positive numbers whose prime factors only include 2, 3, 5
. For example, 6,
8
are ugly while 14
is not ugly since it includes another prime factor 7
.
Note that 1
is typically treated as an ugly number.
如何寻找第n个丑数?
维护2、3、5三个链表作为索引,每次寻找min(result[index2]*2,result[index3]*3,result[index5]*5)
public int nthUglyNumber(int n) { int[] result=new int[n]; result[0]=1; int index2=0,index3=0,index5=0; int count=1; for(int i=1;i<n;i++) { result[i]=min(result[index2]*2,result[index3]*3,result[index5]*5); if(result[i]==result[index2]*2) index2++; if(result[i]==result[index3]*3) index3++; if(result[i]==result[index5]*5) index5++; } return result[n-1]; } public int min(int a,int b,int c) { int min=a<b?a:b; return min<c?min:c; }