leetcode264 丑数II 求解第n个丑数

//Time:O(n),Space:O(n)
//动态规划版本的解题方法,类比,求解第n个斐波那契数列
class Solution 
{
public:
    //求解2个数中的最小数
    int min(int a,int b)
    {
        return a<b?a:b;
    }
    //求解3个数中的最小数
    int min(int a,int b,int c)
    {
        return min(a,b)<c?min(a,b):c;
    }
    //动态规划版解题思路
    int nthUglyNumber(int n) 
    {
        int ugly[n]={0};
        ugly[0]=1;
        int p2=0,p3=0,p5=0;

        for(int i=1;i<n;i++)
        {
            int minValue=min(ugly[p2]*2,ugly[p3]*3,ugly[p5]*5);

            ugly[i]=minValue;

            if(ugly[p2]*2==minValue) p2++;
            if(ugly[p3]*3==minValue) p3++;
            if(ugly[p5]*5==minValue) p5++;
        }

        return ugly[n-1];
    }
};

 

posted @ 2020-01-06 16:35  repinkply  阅读(7)  评论(0)    收藏  举报