丑数 发表于 2018-10-03 | 分类于 数据结构与算法 , 题目汇总 题目描述把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950public class Solution { public int GetUglyNumber_Solution(int index) { if(index <= 0) { return 0; } if(index <= 5) { return index; } int[] array = new int[index]; array[0] = 1; array[1] = 2; array[2] = 3; array[3] = 4; array[4] = 5; for(int i = 5;i < index; i++) { int min = 0; int min2 = 0, min3 = 0, min5 = 0; int temp = 0; //找到已知的丑数的2倍的数,且该数比已知最大丑数大。 for(int j = 0; j < i; j++) { temp = array[j] * 2; if(temp > array[i-1]) { min2 = temp; break; } } //同上,3倍 for(int j = 0;j < i; j++) { temp = array[j] * 3; if(temp > array[i-1]) { min3 = temp; break; } } //同上,5倍 for(int j = 0; j < i; j++) { temp = array[j] * 5; if(temp > array[i-1]){ min5 = temp; break; } } min = Math.min(Math.min(min2, min3), min5); array[i] = min; } return array[index-1]; }}