思路

dp[i]=min(dp[i-某个值]2,dp[i-某个值]3,dp[i-某个值]*5)
这是动态规划寻找状态方程的思路
本题不能这么做,所以要从000出发,用三个指针标记 某个值
注意 1算是第一个丑数

代码

public class Solution {
    public int GetUglyNumber_Solution(int index) {
        if(index<=0){return 0;}
        int p1=0,p2=0,p3=0;
        int[] dp=new int[index+1];
        dp[0]=1;
        for(int i=1;i<=index;i++){
            dp[i]=Math.min(dp[p1]*2,Math.min(dp[p2]*3, dp[p3]*5));
            if(dp[i]==dp[p1]*2){p1++;}
            if(dp[i]==dp[p2]*3){p2++;}
            if(dp[i]==dp[p3]*5){p3++;}

        }   
        return dp[index-1];
    }
}