题解 | #字符串出现次数的TopK问题#(pair&unorder_map&priority_queue)

字符串出现次数的TopK问题

http://www.nowcoder.com/practice/fd711bdfa0e840b381d7e1b82183b3ee

class Solution {
public:
    struct cmp{
        bool operator() (pair<string, int> &p1, pair<string, int> &p2) {
            return p1.second > p2.second || (p1.second == p2.second && p1.first < p2.first);
        }
    };
    vector<vector<string> > topKstrings(vector<string>& strings, int k) {
        unordered_map<string, int> mp; // 哈希表
        for(const string &str: strings){
            ++mp[str];
        }
        priority_queue<pair<string, int>, vector<pair<string, int >>, cmp> pq; // 重新构造排序
        for(const auto& [str,cnt]: mp){
            if(pq.size() < k) pq.emplace(make_pair(str, cnt)); // make_pair()生成pair 对象
            else if (cnt > pq.top().second || cnt == pq.top().second && str < pq.top().first){
                pq.pop(); pq.emplace(make_pair(str, cnt));  
            }
        }
        vector<vector<string>> ans(k);
        while(!pq.empty()){
            ans[--k] = move(vector<string>{pq.top().first, to_string(pq.top().second)}); // move 右值引用
            pq.pop();
        }
        return ans;
    }

};
全部评论

相关推荐

26牛牛不会梦到感谢信:羡慕离职了还能吃吗现在就赶回去
点赞 评论 收藏
分享
01-15 17:34
保定学院 Java
数学转码崽:学历没优势就得卷项目和实习啊,但是我看了一下你这个项目,什么雪花算法,搜索引擎,Docker,minio这些都属于通用的东西啊,根本不算亮点,没有任何业务相关性。 还有第二个看到统一鉴权,分片上传估计面试官都不想看了。连我一个偶尔刷刷牛客简历的都看多了,面试官估计早都看吐了。。。 秋招结束了,就尽量找找中小厂吧,毕竟你现在转行已经没时间了,高低有一段实习经历
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 22:33
杉川机器人 嵌入式工程师 18.0k*13.0, 年终奖1~9个月
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务