剑指 Offer 49. 丑数

package leetcode;

public class offer_49 {
    public int nthUglyNumber(int n) {
        int[] dp=new int[n+1];
        dp[1]=1;
        int i=1, j=1,k=1;
        //所以丑数分别乘以2,3,5,每次取当前位置的最小值
        for (int index = 2; index <=n; index++) {
            dp[index]=Math.min(2*dp[i], Math.min(3*dp[j], 5*dp[k]));
            if(dp[index]==2*dp[i]) {i++;}
            if(dp[index]==3*dp[j]) {j++;}
            if(dp[index]==5*dp[k]) {k++;}
        }
        return dp[n];
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        offer_49 off=new offer_49();
        System.out.println(off.nthUglyNumber(10));
    }

}

 

posted on 2022-04-01 10:08  一仟零一夜丶  阅读(18)  评论(0)    收藏  举报