1. 程式人生 > 實用技巧 >leetcode 313. Super Ugly Number

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(); } };