题解 | #打印N个数组整体最大的Top K#

打印N个数组整体最大的Top K

http://www.nowcoder.com/practice/5727b69bf80541c98c06ab90cf4c509e

用n个优先队列。复杂度, 大概就这样吧。

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n,m;
    int temp,temp2;
    cin>>n>>m;
     priority_queue<int>v[n];
    for(int i=0;i<n;i++){
        cin>>temp;
        for(int j=0;j<temp;j++){
            cin>>temp2;
            v[i].push(temp2);
        }
    }
    vector<int>vv;
    for(int i=0;i<m;i++){
        int max1=INT_MIN;
        int loc=-1;
        for(int j=0;j<n;j++){
            if(v[j].empty())continue;
            if(max1<v[j].top()){
                max1=v[j].top();
                loc=j;
            }
        }
        v[loc].pop();
        vv.push_back(max1);
    }
    for(int i=0;i<m;i++){
        cout<<vv[i]<<" ";
    }
    cout<<endl;
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务