题解 | #丑数#
丑数
http://www.nowcoder.com/practice/6aa9e04fc3794f68acf8778237ba065b
public class Solution {
public int GetUglyNumber_Solution(int index) {
//若小于7,全是丑数,直接返回对应的数
if(index<7) return index;
int[] num = new int[index];
//第一个丑数是1
num[0] = 1;
int i=0,m=0,n=0;
for(int j=1;j<index;j++){
//丑数可以用1为基础,乘以2,3,5来得到下一个丑数,
//比如2*2=4,2*3=6,从中选出最小的,就是下一个丑数.然后下标加一,
num[j] = Math.min(num[i]*2, Math.min(num[m]*3,num[n]*5));
if(num[j] == num[i]*2) i++;
if(num[j] == num[m]*3) m++;
if(num[j] == num[n]*5) n++;
}
//返回最后一个数
return num[index-1];
}
}