剑指offer 面试题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