一、題目
把只包含因子2、3和5的數稱作丑數(Ugly Number)。例如6、8都是丑數,但14不是,因為它包含因子7。 習慣上我們把1當做是第一個丑數。求按從小到大的順序的第N個丑數。
二、解法
1 public class Solution { 2 public int GetUglyNumber_Solution(int index) { 3 if(index <= 0) 4 return 0; 5 if(index < 7) 6 return index; 7 int[] res = new int[index]; 8 res[0] = 1; 9 int t2 = 0,//記錄乘以2的個數 10 t3 = 0,//記錄乘以3的個數 11 t5 = 0,//記錄乘以5的個數 12 i = 1; 13 for(; i < index; i++){ 14 res[i] = Math.min(res[t2]*2, Math.min(res[t3]*3, res[t5]*5)); 15 if(res[i] == res[t2]*2) t2++;//如果最小的等於res[t2]*2,那么t2加1 16 if(res[i] == res[t3]*3) t3++; 17 if(res[i] == res[t5]*5) t5++; 18 } 19 return res[index-1]; 20 } 21 }