LeetCode 692.前K个高频单词

LeetCode 692.前K个高频单词 C++

思路🧐:

首先用map存储该字典,然后放进vector进行排序,注意sort的排序规则与我们想要的规则不一致,所以我们需要写一个伪函数来判断second(value值),由于该题要求了稳定性,所以我们在伪函数还需要继续判断相等情况的顺序。排完序后用vector将前k个单词存储起来返回。

代码🔎:

c++ 复制代码
class Solution {
public:
    struct Ksort
    {
        bool operator()(const pair<string,int>& kv1,const pair<string,int>& kv2)
        {
            return kv1.second > kv2.second || (kv1.second == kv2.second) && kv1.first < kv2.first;
        }
    };
    vector<string> topKFrequent(vector<string>& words, int k) {
        map<string, int> top;
        for(auto& e : words)
        {
            top[e]++;
        }
        vector<pair<string,int>> v(top.begin(),top.end()); //vector兼容多种迭代器
        sort(v.begin(),v.end(),Ksort()); //排序
        vector<string> topv;
        for(size_t i = 0; i < k; i++) //选取前k个
        {
            topv.push_back(v[i].first);
        }
        return topv;
    }
};
相关推荐
我家大宝最可爱几秒前
c++动态链接库
开发语言·c++
乌萨奇也要立志学C++8 分钟前
【C++详解】string各种接口如何使用保姆级攻略
c++
先做个垃圾出来………19 分钟前
汉明距离(Hamming Distance)
开发语言·python·算法
C++ 老炮儿的技术栈31 分钟前
自定义CString类与MFC CString类接口对比
c语言·c++·windows·qt·mfc
小羊在奋斗1 小时前
【LeetCode 热题 100】二叉树的最大深度 / 翻转二叉树 / 二叉树的直径 / 验证二叉搜索树
算法·leetcode·职场和发展
卡戎-caryon1 小时前
【C++】15.并发支持库
java·linux·开发语言·c++·多线程
superior tigre2 小时前
C++学习:六个月从基础到就业——C++11/14:列表初始化
c++·学习
2301_794461572 小时前
力扣-283-移动零
算法·leetcode·职场和发展
编程绿豆侠2 小时前
力扣HOT100之二叉树:98. 验证二叉搜索树
算法·leetcode·职场和发展
啊吧怪不啊吧2 小时前
C/C++之内存管理
开发语言·汇编·c++