题解 | #丑数#
丑数
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]; } }