Sword Finger Предложение Интервью Вопрос 49. Гадкий Число [Среднее] -Динамическое Программирование

Та же проблема, что и у LeetCode264.

Мое решение:

Примечания к сведению:

(1) 1 также является уродливым числом

(2) При определении, кто увеличивает abc, используйте if вместо else if, поскольку вполне возможно, что dp [i] является результатом нескольких чисел, умноженных на коэффициенты

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
рекомендация