264. 丑数 II

题目描述:

264. 丑数 II_第1张图片

主要思路:

利用动态规划的思想,记录2 3 5分别乘到了哪里,然后取最小作为新的数字。

class Solution {
public:
    int nthUglyNumber(int n) {
        int dp[n+1];
        dp[1]=1;
        int p2=1,p3=1,p5=1;
        for(int i=2;i<=n;++i)
        {
            int num2 = dp[p2]*2,num3 = dp[p3]*3, num5=dp[p5]*5;
            int num = min(min(num2,num3),num5);
            if(num==num2)
                ++p2;
            if(num==num3)
                ++p3;
            if(num==num5)
                ++p5;
            dp[i]=num;
        }
        return dp[n];
    }
};

你可能感兴趣的:(Leetcode,leetcode)