您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页692. 前k个高频单词(map)

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

来源:化拓教育网


一、题目

二、代码

class Solution {
    class KV_sort
    {
    public:
        bool operator()(const pair<string,int> kv1, const pair<string,int> 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<string> topKFrequent(vector<string>& words, int k) {
        
        map<string,int> m;
        //先统计每个单词出现的次数+自动排序
        for(auto& str:words)
        {
            m[str]++;
        }

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

        vector<string>ret;//结果存放
        for(int i=0;i<k;i++)
        {
            ret.push_back(KV[i].first);
        }
        return ret;

    }
};

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务