Sword Finger Offer Interview Question 49.醜い数[中]-動的プログラミング

LeetCode264と同じ問題。

私の解決策:

注意点:

(1)1も醜い数

(2)だれがabcをインクリメントするかを決定する場合、dp [i]が複数の数に係数を掛けた結果である可能性があるため、else ifではなくifを使用します。

class Solution {
public:
    int nthUglyNumber(int n) {
        if(n<7) return n;
        int *dp=new int[n];
        int a=0,b=0,c=0;
        dp[0]=1;
        int i=1;
        while(i<n){
            dp[i]=min({2*dp[a],3*dp[b],5*dp[c]});
            if(dp[i]==2*dp[a])  a++;
            if(dp[i]==3*dp[b])  b++;
            if(dp[i]==5*dp[c])  c++;
            i++;
        }
        return dp[n-1];
    }
};

オリジナルの記事を65件公開 いいね1 訪問数488

おすすめ

転載: blog.csdn.net/qq_41041762/article/details/105459508