当前位置: 首页 > news >正文

<692> 前K个高频单词

给定一个单词列表 words 和一个整数 k ,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率, 按字典顺序 排序。

示例 1:

输入: words = ["i", "love", "leetcode", "i", "love", "coding"], k = 2
输出: ["i", "love"]
解析: "i" 和 "love" 为出现次数最多的两个单词,均为2次。
    注意,按字母顺序 "i" 在 "love" 之前。

示例 2:

输入: ["the", "day", "is", "sunny", "the", "the", "the", "sunny", "is", "is"], k = 4
输出: ["the", "is", "sunny", "day"]
解析: "the", "is", "sunny" 和 "day" 是出现次数最多的四个单词,
    出现次数依次为 4, 3, 2 和 1 次。

解答

class Solution {
public:
    vector<string> topKFrequent(vector<string>& words, int k) {
        // 统计次数——默认按string排序
        map<string, int> countMap;
        for(auto& str : words)
        {
            countMap[str]++;
        }

        // 加greater<int>改成降序,用iterator先取次数高的
        multimap<int, string, greater<int>> sortMap;
        for(auto& kv : countMap)
        {
            sortMap.insert(make_pair(kv.second, kv.first));
        }

        vector<string> v;
        multimap<int, string, greater<int>>::iterator it = sortMap.begin();
        for(size_t i = 0; i < k; i++)
        {
            v.push_back(it->second);
            ++it;
        }

        return v;
    }
};

相关文章:

  • Windows、Mac、Linux,到底该怎么选?
  • 20250220-代码笔记01-class CVRPEnv
  • 画册封面设计有哪些要点呢?
  • 计算机单位之详解——存储单位Byte 网络传输单位bps 视频码率单位bps
  • 关于ES中text类型时间字段范围查询的结构化解决方案
  • 基于 DeepSeek LLM 本地知识库搭建开源方案(AnythingLLM、Cherry、Ragflow、Dify)认知
  • IC版图设计之DXF文件格式详解
  • 使用ezuikit-js封装一个对接摄像头的组件
  • node和vue的主流版本组合版本介绍
  • DeepSeek与AI幻觉
  • [寻找密码]
  • 游戏引擎学习第116天
  • Linux--进程(进程虚拟地址空间、页表、进程控制、实现简易shell)
  • python字符串列表
  • ROS2学习
  • 25工程管理研究生复试面试问题汇总 工程管理专业知识问题很全! 工程管理复试全流程攻略 工程管理考研复试真题汇总
  • 深度学习图像预处理可视化:拆解Compose操作的全过程
  • Java并发编程面试题:ThreadLocal(8题)
  • VIM FZF 安裝和使用
  • ClickHouse系列之ClickHouse安装
  • 比特币价格时隔三个月再度站上10万美元
  • 普京:“胜利日停火”已开始生效
  • 蓝佛安:中方将采取更加积极有为的宏观政策,有信心实现2025年的5%左右增长目标
  • “五一”假期银联、网联共处理支付交易234.39亿笔
  • 《蓦然回首》:现代动画的践行与寓言
  • 特朗普要征电影关税惊扰全球电影业,“让好莱坞再次伟大”或现反效果