前K个高频单词
一、解题思路统计频率使用 mapstring, int 统计每个单词出现的次数map 会自动根据键单词进行字典序升序排列这一步为后续同频次单词的排序奠定了基础转存到 vector将 map 中的键值对pairstring,int存入 vector以便使用 STL 排序算法按频率降序排序使用 stable_sort 配合自定义仿函数按频率降序排列为什么用 stable_sort因为 stable_sort 是稳定排序不会改变相等元素的相对顺序而 map 中原本已经按照字典序排好了相同频率的单词稳定排序后这些单词的字典序顺序将被保留如果使用 sort不稳定排序相同频率的单词顺序可能被改变需要额外处理字典序提取前 k 个单词将排序后 vector 的前 k 个元素的 first单词存入结果数组并返回二、代码实现附详细注释classSolution{//创建一个仿函数用于根据单词出现频次比较大小辅助stable_sort根据频次降序排序structCompare{booloperator()(constpairstring,inta,constpairstring,intb){returna.secondb.second;}};public:vectorstringtopKFrequent(vectorstringwords,intk){//map的作用//1.根据key值string类型把单词排序map默认对string类型的key值进行字典序排序//这样下来提前根据字典序排好当出现频次相同的单词时就不必再根据字典序进行二次排序//因为map提前已经给你排好字典序了//2.把每个不同的单词出现的频次记录下来方便后面对频次不同的单词进行频次降序排序mapstring,intmapCount;for(autoch:words){mapCount[ch];}//把已经排好字典序的pair值放进vector数组方便stable_sort排序的时候使用vectorpairstring,intv(mapCount.begin(),mapCount.end());//把存有pair值的vector数组元素进行比较使用stable_sort排序的原因是//该排序稳定性好不会打乱相同频次单词之间事先用map排好的字典序stable_sort(v.begin(),v.end(),Compare());//把符合题目排序要求的数组的前K个pair元素的key值放入新的vector数组用与返回vectorstringvwords;for(inti0;ik;i){vwords.push_back(v[i].first);}returnvwords;}};三、关键点解析为什么用 map 而不是 unordered_mapunordered_map 哈希表统计频率更快O(1) 平均但不会对键排序若使用 unordered_map后续排序时同频次单词需要额外进行字典序排序代码会复杂一些本题数据规模适中map 的 O(n log n) 插入足够高效且简洁stable_sort 的作用假设有两个单词 “apple” 和 “banana” 都出现 2 次在 map 中顺序为 “apple” 先于 “banana”不稳定排序可能交换它们的顺序导致结果字典序错误stable_sort 保证相同频率的单词保持原来的相对顺序即保持字典序仿函数 Compare 的设计重载 operator() 返回 a.second b.second实现降序也可以直接使用 lambda 表达式但仿函数使代码更清晰时间复杂度统计频率O(n log n)插入 map排序O(m log m)m 为不同单词个数m ≤ n四、测试

相关新闻

AI Agent 面试题 147:GPT-4、Claude、Gemini、Llama等主流LLM在Agent场景下的对比分析

AI Agent 面试题 147:GPT-4、Claude、Gemini、Llama等主流LLM在Agent场景下的对比分析

🔥 AI Agent 面试题 147:GPT-4、Claude、Gemini、Llama等主流LLM在Agent场景下的对比分析摘要:本文深入解析了「GPT-4、Claude、Gemini、Llama等主流LLM在Agent场景下的对比分析」这一 AI Agent 领域的核心面试题。文章从 LLM 选型与评估 的基…

2026/10/5 2:05:28 阅读更多 →
【NebulaGraph】如何为 NebulaGraph 的存储引擎增加一个新的 Compaction 策略?

【NebulaGraph】如何为 NebulaGraph 的存储引擎增加一个新的 Compaction 策略?

NebulaGraph 3.8.0 存储引擎 Compaction 策略深度定制:从源码集成到生产调优的全链路解析 引言:问题界定与场景引入 本文将深入解析用户提出的 “如何为 NebulaGraph 的存储引擎增加一个新的 Compaction 策略?” 这一核心问题。Compaction(压缩/合并)是基于 LSM-Tree 架…

2026/10/5 2:05:28 阅读更多 →
AI Agent 面试题 138:LLM-as-Judge的评估一致性如何通过校准提升?

AI Agent 面试题 138:LLM-as-Judge的评估一致性如何通过校准提升?

🔥 AI Agent 面试题 138:LLM-as-Judge的评估一致性如何通过校准提升?摘要:本文深入解析了「LLM-as-Judge的评估一致性如何通过校准提升?」这一 AI Agent 领域的核心面试题。文章从 LLM-as-Judge 的基本概念出发&#x…

2026/10/5 2:05:28 阅读更多 →

最新新闻

基于S7-200和组态王的恒压供水系统设计与调试实践

基于S7-200和组态王的恒压供水系统设计与调试实践

刚做完这个小区泵房的恒压供水改造时,业主群算是消停了。之前一到晚高峰,五六楼的花洒就成涓涓细流,物业被投诉得焦头烂额。改造方案最后拍板用西门子S7-200 PLC加组态王组态软件,变频器驱动两台水泵,压力变送器做闭环…

2026/10/5 4:12:20 阅读更多 →
YOLOv11改进模型实战:小目标检测与注意力机制助力野生动物监测

YOLOv11改进模型实战:小目标检测与注意力机制助力野生动物监测

简介:面向环保监测与计算机视觉交叉领域的学习者和研究者,这份 PDF 围绕 YOLOv11 改进模型在野生动物种群监测中的实践展开,系统介绍了单阶段目标检测算法的原理、改进设计及工程落地方法。资源共 1 个 PDF 文件,约 2.01MB&#x…

2026/10/5 4:12:20 阅读更多 →
Manim next_to 用法:标签不跟着物体移动?add_updater 和 VGroup 两种改法(0.21.0 实测)

Manim next_to 用法:标签不跟着物体移动?add_updater 和 VGroup 两种改法(0.21.0 实测)

next_to 是 Manim 里最常用的相对定位方法:label.next_to(tri, RIGHT, buff0.3) 把标签摆到三角形右边 0.3 的位置。但它是一次性的,只在调用的那一行算一次坐标,不会建立「一直在右边」的关系。所以之后三角形一动,标签就留在原地…

2026/10/5 4:12:20 阅读更多 →
AI驱动的数据库自治:DAS Agent如何让运维从救火到防火

AI驱动的数据库自治:DAS Agent如何让运维从救火到防火

半夜2点17分,手机在床头柜上震动。不是闹钟,是数据库告警推送。CPU 99%、连接数打满、慢查询刷屏、主从延迟飙到几十秒。你爬起来,眯着眼打开电脑,看一眼监控大盘,翻几页慢日志,先kill几个失控会话&#xf…

2026/10/5 4:12:20 阅读更多 →
CH340驱动全平台安装与深度兼容性解析

CH340驱动全平台安装与深度兼容性解析

1. 这不是“装个驱动”那么简单:CH340驱动背后的真实战场你手边那块几十块钱的Arduino Nano、ESP32开发板、或者某款国产USB转串口小模块,十有八九用的是CH340芯片。它不像FTDI那样声名显赫,却以极低的成本和足够稳定的性能,默默撑…

2026/10/5 4:12:20 阅读更多 →
STM32电子时钟实战:从RTC校准到OLED驱动的硬核调试

STM32电子时钟实战:从RTC校准到OLED驱动的硬核调试

1. 这不是“又一个电子时钟”,而是STM32入门的实战锚点你搜“STM32电子时钟”,页面刷出来几百个教程——有的用51单片机冒充STM32,有的KEIL工程里连HAL库都没开,有的Proteus仿真图里OLED引脚全接错还标着“已实测”。我带过三届嵌…

2026/10/5 4:11:20 阅读更多 →

日新闻

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 0:00:22 阅读更多 →
AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

1. 从“plugins”这个词说起:它到底在解决什么问题如果你最近在折腾 AI 编程工具,尤其是 Cursor、Codex CLI、Claude Code 这类带 CLI 的编辑器或命令行助手,那你大概率绕不开一个词——plugins。这个词本身不新鲜,从浏览器到 IDE…

2026/10/5 0:00:23 阅读更多 →
第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 0:00:23 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 1:10:22 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 3:06:17 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 11:40:45 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 20:14:29 阅读更多 →