313. 超级丑数
这个题一开始想到用 优先队列来做,但是超时了, 原因是维护优先队列需要花费时间
其实其核心思想很难描述 ,用人话讲就是:
对于质因数列表中的每个元素,需要维护一个值来记录,上次用这个元素构建的最大值是多少,
然后下次,只要比较,所有质因数列表重新又根据上一轮的最大值来构建的新的值的最小值,
而如果维护dp 就可以不记录值,记录dp的位置就行
class Solution {
public:
int nthSuperUglyNumber(int n, vector<int>& primes) {
long res =0;
vector<long> dp(n+1,1);
int m= primes.size();
vector<long> resnum(m,1);
vector<int> lastloc(m,1);
for (int i =2;i<=n;i++){
long minnum =INT_MAX;
int mi