把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7 。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数
Java:
1 public class Solution { 2 public int GetUglyNumber_Solution(int index) { 3 if (index <= 6) 4 return index ; 5 int i2 = 0 , i3 = 0 , i5 = 0 ; 6 int[] dp = new int[index] ; 7 dp[0] = 1 ; 8 for(int i = 1 ; i < index ; i++){ 9 int n2 = dp[i2]*2 , n3 = dp[i3]*3 , n5 = dp[i5]*5 ; 10 dp[i] = Math.min(n2 , Math.min(n3,n5)) ; 11 if (dp[i] == n2) 12 i2++ ; 13 if (dp[i] == n3) 14 i3++ ; 15 if (dp[i] == n5) 16 i5++ ; 17 } 18 return dp[index-1]; 19 } 20 }