题目描述
把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
import java.util.ArrayList;
public class Solution {
public int GetUglyNumber_Solution(int input) {
if(input == 0)
return 0;
ArrayList<Integer> array = new ArrayList<Integer>();
int n2 = 1;
int m2 = 0;
int n3 = 1;
int m3 = 0;
int n5 = 1;
int m5 = 0;
array.add(1);
int n = 1;
while(n < input){
int min = Math.min(n2*2, Math.min(n3*3, n5*5));
array.add(min);
if(n2*2 <= min) {
m2 ++;
n2 = array.get(m2);
}
if(n3*3 <= min) {
m3 ++;
n3 = array.get(m3);
}
if(n5*5 <= min) {
m5 ++;
n5 = array.get(m5);
}
n ++;
}
return array.get(input - 1);
}
}