动态规划
丑数
http://www.nowcoder.com/questionTerminal/6aa9e04fc3794f68acf8778237ba065b
丑数必定是由若干个2,3,5相乘获得的,每个丑数乘2.3.5分别可以衍生出3个新丑数,但是会存在重复。所以定义三个指针分别代表乘2.3.5。开始都指向0,每次乘2.3.5,最小的值就是下一个丑数,那相应的指针也得++。在动态的比较中获得最小的丑数。
import java.util.*;
public class Solution {
public int GetUglyNumber_Solution(int index) {
if(index<=0) return 0;
int[] result=new int[index];
int p2=0,p3=0,p5=0;
result[0]=1;
for (int i=1;i<index;i++){
int min=Math.min(result[p2]*2,Math.min(result[p3]*3,result[p5]*5));
if (min==result[p2]*2) {
result[i]=min;
p2++;
}
if (min==result[p3]*3){
result[i]=min;
p3++;
}
if (min==result[p5]*5){
result[i]=min;
p5++;
}
}
return result[index-1];
}
}
