面试题:寻找第N个丑数
难度:中等
我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。
求按从小到大的顺序的第N个丑数。
参考答案:
public class Solution { public int nthUglyNumber(int n) { int[] ugly = new int[n]; ugly[0] = 1; int i2 = 0, i3 = 0, i5 = 0; for(int i = 1; i < n; i++) { int next2 = ugly[i2]*2, next3 = ugly[i3]*3, next5 = ugly[i5]*5; int min = Math.min(next2, Math.min(next3, next5)); ugly[i] = min; if(min == next2) i2++; if(min == next3) i3++; if(min == next5) i5++; } return ugly[n-1]; } }