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;
    }
};
相关推荐
煤泥做不到的!1 小时前
挑战一个月基本掌握C++(第十一天)进阶文件,异常处理,动态内存
开发语言·c++
F-2H1 小时前
C语言:指针4(常量指针和指针常量及动态内存分配)
java·linux·c语言·开发语言·前端·c++
axxy20002 小时前
leetcode之hot100---24两两交换链表中的节点(C++)
c++·leetcode·链表
chenziang12 小时前
leetcode hot100 环形链表2
算法·leetcode·链表
若亦_Royi3 小时前
C++ 的大括号的用法合集
开发语言·c++
Captain823Jack3 小时前
nlp新词发现——浅析 TF·IDF
人工智能·python·深度学习·神经网络·算法·自然语言处理
Captain823Jack4 小时前
w04_nlp大模型训练·中文分词
人工智能·python·深度学习·神经网络·算法·自然语言处理·中文分词
是小胡嘛4 小时前
数据结构之旅:红黑树如何驱动 Set 和 Map
数据结构·算法
m0_748255024 小时前
前端常用算法集合
前端·算法
呆呆的猫5 小时前
【LeetCode】227、基本计算器 II
算法·leetcode·职场和发展