这道题目的思路有点难想到,它说第几个丑数,而且丑数是由什么组成的。
第几个丑数,是指排序后的第几个数,而又因为由质因数2,3,5,组成。
搜先初始化一个数组arr,其中arr[0]=1,也就是第一个丑数,然后由第一个丑数乘以,2,3,5丑数,取最小的那一个为arr的第二个数,然后,判断最小的那个数是由这三个因子那一个乘已第一个数,然后对应因子的下标加1,如id1++,最后这样循环,得到一个数组,取数组最后一个数返回即可。
public class Solution {
public int GetUglyNumber_Solution(int index) {
int[] arr = new int[index];
if(index<=5)
return index;
int id1 = 0;
int id2 = 0;
int id3 = 0;
arr[0]=1;
for(int i=1;i<index;i++){
arr[i] = Math.min(arr[id1]*2,Math.min(arr[id2]*3,arr[id3]*5));
if(arr[i]==arr[id1]*2)
id1++;
if(arr[i]==arr[id2]*3)
id2++;
if(arr[i]==arr[id3]*5)
id3++;
}
return arr[index-1];
}
}