1*2(t2) 2*2 3*2
(t3)1*3 2*3 3*3
(t5)1*5 2*5 3*5
1*2 2*2(t2) 3*2
1*3(t3) 2*3 3*3
(t5)1*5 2*5 3*5
Solution:
public int nthUglyNumber(int n) {
if(n == 1) return 1;
int t2 = 0, t3 = 0, t5 = 0;
int[] k = new int[n];
k[0] = 1;
for(int i = 1; i < n; i++) {
k[i] = Math.min(Math.min(k[t2] * 2, k[t3] * 3), k[t5] * 5);
if (k[i] == k[t2] * 2) t2++;
if (k[i] == k[t3] * 3) t3++;
if (k[i] == k[t5] * 5) t5++;
}
return k[n-1];
}
No comments:
Post a Comment