牛客(33)丑数
// 题目描述 // 把只包含因子2、3和5的数称作丑数(Ugly Number)。 // 例如6、8都是丑数,但14不是,因为它包含因子7。 // 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 public static int GetUglyNumber_Solution(int index) { if (index<=0){ return 0; } ArrayList<Integer> arrayList = new ArrayList<Integer>(); arrayList.add(1); int num2 = 0; int num3 = 0; int num5 = 0; while (arrayList.size()<index){ int nextNum2 = arrayList.get(num2)*2; int nextNum3 = arrayList.get(num3)*3; int nextNum5 = arrayList.get(num5)*5; int min = nextNum2<nextNum3?nextNum2:nextNum3; min = min<nextNum5?min:nextNum5; arrayList.add(min); if (nextNum2 == min){ num2++; } if (nextNum3 == min){ num3++; } if (nextNum5 == min){ num5++; } } return arrayList.get(index-1); }