313. 超级丑数

 1 //跟264题差不多
 2 class Solution 
 3 {
 4 public:
 5     int nthSuperUglyNumber(int n, vector<int>& primes) 
 6     {
 7         vector<int> dp(n);
 8         dp[0] = 1;
 9         vector<int> pos(primes.size(),0);//每个变量对应的位置
10         for(int i = 1;i < n;i ++)
11         {
12             int min = INT_MAX;
13             for(int j = 0;j < primes.size();j ++)//找到最小值
14             {
15                 if(min > primes[j] * dp[pos[j]]) min = primes[j] * dp[pos[j]];
16             }
17             dp[i] = min;
18             for(int j = 0;j < primes.size();j ++)//找到最小值的位置之后,就++
19             {
20                 if(min == primes[j] * dp[pos[j]]) pos[j] ++;
21             }
22         }
23         return dp[n - 1];
24     }
25 };

 

posted @ 2020-04-20 23:32  Jinxiaobo0509  阅读(160)  评论(0)    收藏  举报