多路归并+set去重
前言:这个题目一开始没啥想法,看完题解后感触很深,我们每次取出的最小的数乘以2,3,5可能就是我们下一个候选的答案,我们用set进行去重即可
题目地址
#include<bits/stdc++.h>
using namespace std;
class Solution {
public:
int getUglyNumber(int n) {
// priority_queue<int,vector<int>,greater<int>> q;
set<int> q;
q.insert(1);
int now;
while(n--){
now = *q.begin();
q.erase(now);
q.insert(now*2);
q.insert(now*3);
q.insert(now*5);
}
return now;
}
};