/**获取第n个丑数 只包含质因子2、3和5的数称作丑数
* 后边的数是前边数的2,3,5倍,获取前边每个数的2,3,5倍数
* @param n
* @return
*/
public static int GetUglyNumber(int n) {
if (n <= 0)
return 0;
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
int i2 = 0, i3 = 0, i5 = 0;
while (list.size() < n) {
int m2 = list.get(i2) * 2;
int m3 = list.get(i3) * 3;
int m5 = list.get(i5) * 5;
int min = Math.min(m2, Math.min(m3, m5));
list.add(min);
if (min == m2)
i2++;
if (min == m3)
i3++;
if (min == m5)
i5++;
}
return list.get(list.size() - 1);
}
求第n个丑数
最新推荐文章于 2021-08-28 18:35:53 发布