34 丑数

把只包含因子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 }

猜你喜欢

转载自www.cnblogs.com/mengchunchen/p/9008836.html
34