模板:
int cnt=0
priority_queue<int,vector<int>,greater<int>>pq;
for(int i=0;i<nums.size();i++) //初始化,将原始的数据入队
{
pq.push(make_pair(nums[i],i));
}
while(cnt<right) //前k小
{
int temp=pq.top();
pq.pop();
pq.push(?); //push的是temp链接的下一个
cnt++;
}
思路:每次将队列中最小的出队,并将与该最小值相关联的入队,维护队列
例题: