public int GetUglyNumber_Solution(int index) {
if (index <= 0) {
return 0;
}
int[] uglyNums = new int[index];
uglyNums[0] = 1;
int nextUgly = 1, multiple2 = 0, multiple3 = 0, multiple5 = 0;
while (nextUgly < index) {
uglyNums[nextUgly] = min(uglyNums[multiple2] * 2,
uglyNums[multiple3] * 3, uglyNums[multiple5] * 5);
while (uglyNums[multiple2] * 2 <= uglyNums[nextUgly]) {
multiple2++;
}
while (uglyNums[multiple3] * 3 <= uglyNums[nextUgly]) {
multiple3++;
}
while (uglyNums[multiple5] * 5 <= uglyNums[nextUgly]) {
multiple5++;
}
nextUgly++;
}
return uglyNums[--nextUgly];
}