public class Solution {
public int GetUglyNumber_Solution(
int index) {
if(index <=
0)
return 0;
int[] pUglyNumbers =
new int[index+
5];
pUglyNumbers[
0] =
1;
int nextUglyNumber =
1;
int a =
0;
int b =
0;
int c =
0;
while (nextUglyNumber < index) {
int min = Min(pUglyNumbers[a] *
2, pUglyNumbers[b] *
3,
pUglyNumbers[c] *
5);
pUglyNumbers[nextUglyNumber] = min;
while (pUglyNumbers[a] *
2 <= pUglyNumbers[nextUglyNumber]) {
++a;
}
while (pUglyNumbers[b] *
3 <= pUglyNumbers[nextUglyNumber]) {
++b;
}
while (pUglyNumbers[c] *
5 <= pUglyNumbers[nextUglyNumber]) {
++c;
}
++nextUglyNumber;
}
return pUglyNumbers[nextUglyNumber-
1];
}
public int Min(
int a,
int b,
int c) {
int min = (a < b) ? a : b;
min = (min < c) ? min : c;
return min;
}
public static void main(String[] args) {
Solution solution =
new Solution();
System.
out.println(solution.GetUglyNumber_Solution(
2));
}
}