时间空间效率的平衡:丑数
Posted SaraMorning
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了时间空间效率的平衡:丑数相关的知识,希望对你有一定的参考价值。
把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
public class Solution { final int d[] = { 2, 3, 5 }; public int GetUglyNumber_Solution(int index) { if (index == 0) return 0; int a[] = new int[index]; a[0] = 1; int p[] = new int[] { 0, 0, 0 }; int num[] = new int[] { 2, 3, 5 }; int cur = 1; while (cur < index) { int m = finMin(num[0], num[1], num[2]); if (a[cur - 1] < num[m]) a[cur++] = num[m]; p[m] += 1; num[m] = a[p[m]] * d[m]; } return a[index - 1]; } private int finMin(int num2, int num3, int num5) { int min = Math.min(num2, Math.min(num3, num5)); return min == num2 ? 0 : min == num3 ? 1 : 2; } }
以上是关于时间空间效率的平衡:丑数的主要内容,如果未能解决你的问题,请参考以下文章
剑指Offer-时间效率与空间效率的平衡面试题50.2:字符流中第一个不重复的字符