leetcode 313. Super Ugly Number

https://www.cnblogs.com/grandyang/p/5144918.html

1. 

class Solution {
public:
    int nthSuperUglyNumber(int n, vector<int>& primes) {
        vector<int> res(1,1),idx(primes.size(),0);
        while(res.size()<n) {
            vector<int> tmp;
            int mn=INT_MAX;
            for(int i=0;i<primes.size();++i) tmp.push_back(res[idx[i]]*primes[i]);
            for(int i=0;i<primes.size();++i) mn=min(mn,tmp[i]);
            for(int i=0;i<primes.size();++i) if(tmp[i]==mn) {++idx[i];}
            res.push_back(mn);
        }
        return res.back();
    } 
};

2. 

class Solution {
public:
    int nthSuperUglyNumber(int n, vector<int>& primes) {
        vector<int> res(1,1),idx(primes.size(),0);
        for(int i=1;i<n;++i) {
            res.push_back(INT_MAX);
            for(int j=0;j<primes.size();++j) res[i]=min(res[i],res[idx[j]]*primes[j]);
            for(int j=0;j<primes.size();++j) if(res[i]==res[idx[j]]*primes[j]) ++idx[j];
        }
        return res.back();
    }
};

 

posted @ 2020-06-30 10:18  qiujiejie  阅读(133)  评论(0编辑  收藏  举报