public class Solution{ public int GetUglyNumber_Solution(int index){ if(index <= 6) return index; int p1 = 0; int p2 = 0; int p3 = 0; int[] result = new int[index]; result[0] = 1; for(int i = 1;i < index;i ++){ result[i] = Math.min(result[p1]*2,Math.min(result[p2]*3,result[p3]*5)); if(result[i] == result[p1]*2) p1 ++; if(result[i] == result[p2]*3) p2 ++; if(result[i] == result[p3]*5) p3 ++; } return result[index - 1]; } } // for(int i = 1; i < index; i++){ // // 得到下一个丑数,三者中最小的 // res[i] = Math.min(res[i2]*2,Math.min(res[i3]*3,res[i5]*5)); // /第一次是 2、3、5比较,得到最小的是2/ // /第二次是 4、3、5比较,为什么是4了呢?因为上次2已经乘了一次了,所以接下去可以放的丑数在4、3、5之间/ // // 所以开头的三个指针就是来标记2 3 5 乘的次数的 // if(res[i] == res[i2]*2) // i2++; // if(res[i] == res[i3]*3) // i3++; // if(res[i] == res[i5]*5) // i5++; // } // return res[index-1]; // } // }