天天看點

313. Super Ugly Number LeetCode

題意:給你k個素數,讓你求第n個醜數,臭數的定義是,隻包含給定的素質因子的數。1是特殊的醜數。

題解:每個質素都有一個隊列,相當于多個隊列取一個最小的出隊一樣。

class Solution {
public:
    int nthSuperUglyNumber(int n, vector<int>& primes) {
        int k = primes.size();
        int ans[n + ],index[k + ];
        memset(index,,sizeof(index));
        ans[] = ;
        for(int i = ; i < n; i++)
        {
            int minx = primes[] * ans[index[]];
            for(int j = ; j < k; j++)
            {
                minx = min(minx,primes[j] * ans[index[j]]);
            }
            ans[i] = minx;
            for(int j = ; j < k; j++)
                if(primes[j] * ans[index[j]] == minx)
                    index[j]++;
        }
        return ans[n - ];
    }
};