692. 前k个高频单词(map)

目录

一、题目

二、代码


一、题目

692. 前K个高频单词 - 力扣(LeetCode)

692. 前k个高频单词(map)_第1张图片

二、代码

class Solution {
    class KV_sort
    {
    public:
        bool operator()(const pair kv1, const pair kv2)
        {
            if(kv1.first == kv2.first )//两个对象的单词相同,就比较次数
            {
                return kv2.second > kv1.second;// 返回 true 表示 kv2 在 kv1 之前
            }
            else
            {
                //根据 pair 中的第二个元素进行比较
                return kv1.second>kv2.second;// 返回 true 表示 kv1 在 kv2 之前
            }
        }
    };
public:

    vector topKFrequent(vector& words, int k) {
        
        map m;
        //先统计每个单词出现的次数+自动排序
        for(auto& str:words)
        {
            m[str]++;
        }

        //sort 无法直接对 map进行排序
        vector> KV(m.begin(),m.end());
        stable_sort(KV.begin(),KV.end(),KV_sort());//进行稳定性排序

        vectorret;//结果存放
        for(int i=0;i

你可能感兴趣的:(牛客/力扣,java,算法,数据结构)