[LeedCode OJ]#264 Ugly Number II

【 声明:版权所有,转载请标明出处,请勿用于商业用途。  联系信箱:[email protected]

题目链接:https://leetcode.com/problems/ugly-number-ii/

题意:
如果一个数只含有2,3,5这三种因子,那么这个数就是Ugly number,现在要求第n个Ugly number是什么

思路:
开一个a数组存放所有Ugly number,然后a2,a3,a5存放乘2,3,5的所有数,每次找一个最小的放入a中,并增加长度

class Solution
{
public:
    int nthUglyNumber(int n)
    {
        int* a=new int[n+1];
        int* a2 = a;
        int* a3 = a;
        int* a5 = a;
        int cnt = 0;
        a[cnt++] = 1;
        while(cnt<n)
        {
            int num = min(*a2*2,min(*a3*3,*a5*5));
            a[cnt++] = num;
            while(*a2*2<=num)
                a2++;
            while(*a3*3<=num)
                a3++;
            while(*a5*5<=num)
                a5++;
        }
        return a[cnt-1];
    }
};


你可能感兴趣的:(leedcode)