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:struct Greater{bool operator()(const pair<string,int>& kv1, const pair<string,int>& kv2){return kv1.second > kv2.second;}};vector<string> topKFrequent(vector<string>& words, int k) {map<string,int> countMap;for(const auto& e : words){countMap[e]++;}vector<pair<string,int>> KvVec(countMap.begin(),countMap.end());stable_sort(KvVec.begin(),KvVec.end(),Greater());//和sort一样,但是stable_sort是稳定的排序vector<string> ret;for(int i=0;i<k;i++){ret.push_back(KvVec[i].first);}return ret;}
};
class Solution {
public:struct Greater{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> countMap;for(const auto& e : words){countMap[e]++;}vector<pair<string,int>> KvVec(countMap.begin(),countMap.end());sort(KvVec.begin(),KvVec.end(),Greater());vector<string> ret;for(int i=0;i<k;i++){ret.push_back(KvVec[i].first);}return ret;}
};
这里有两种方法,一种是正常使用sort,一种是不使用sort
class Solution {
public:vector<string> topKFrequent(vector<string>& words, int k) {map<string,int> countMap;for(const auto& e : words){countMap[e]++;}multimap<int,string,greater<int>> sortMap;//这里依赖map底层实现,有些平台可能过不了for(auto& kv : countMap){sortMap.insert(make_pair(kv.second,kv.first));}vector<string> v;auto it = sortMap.begin();while(k--){v.push_back(it->second);++it;}return v;}
};
思路:
这道题麻烦的是按照字典序去排列,sort是对随机迭代器进行排序的,而map是双向迭代器,也就是说map是无法使用sort的,所以我们在上边倒来倒去的倒数据,这道题就是用map统计一下频率然后按频率排序即可,这里需要给sort设计一个仿函数,让频率大的在前面,如果使用原始的sort,那么会面临因为sort是不稳定的排序,所以要自己加一些条件,或者换一个稳定的排序函数,比如stable_sort,接着我们把前k个放在一个vector里返回即可
除了sort可以排序,map也可以再排序,我们反过来再搞一个multimap(map会去重)排序即可,这里需要给map传第三个模板参数,这里依赖底层实现,有的平台可能不会通过,接着一样再把前k个放入vector返回即可
相关文章:
692. 前K个高频单词
题目来源:力扣 题目描述: 给定一个单词列表 words 和一个整数 k ,返回前 k 个出现次数最多的单词。 返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率, 按字典顺序 排序。 示例 1: 输入:…...
介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用
Docker 是一个开源的容器化平台,可以让开发者将应用程序和其所依赖的组件(如库、运行环境)打包成一个可移植、自包含的容器。这个容器可以在任何支持 Docker 的环境中运行,包括开发、测试、生产等环境。Docker 的基本概念包括以下…...
C++:构建一个二叉树的代码
#include <iostream>// 定义二叉树节点 struct BinaryTreeNode {int data;BinaryTreeNode* left;BinaryTreeNode* right;BinaryTreeNode(int val) : data(val), left(nullptr), right(nullptr) {} };// 构建二叉树 BinaryTreeNode* buildBinaryTree() {int val;std::ci…...
iOS 设置下载部分文件,如何获取完整文件的大小
在视频的需求中,遇到这样一个需求,播放一视频的时候,要预下载 后面10条视频,但是只下载后面十条视频的前面1M 实现方法 1 创建请求时设置cacheLength resource [[IdiotResource alloc] init];resource.requestURL task.request…...
如何助力金融贷款企业实现精准营销获客
无论是哪个行业,吸引客户都是核心。 许多公司的线下渠道面临着许多障碍,以至于他们不得不采用在线客户获取方法。受影响最大的行业之一是贷款行业。如何获得准确的贷款客户资源?如何赢得客户已经成为企业的一大痛点。 过去,信贷…...
html中的换行(\n)或回车(\r)符号不起作用的解决办法、br、white、space、pre、line
文章目录 前言html不解释空白字符CSS样式的影响特定的文本区域white-space 前言 如果您的HTML中的换行和回车符号(\n和\r)似乎不起作用,可能有几种可能的原因: html不解释空白字符 在HTML中,连续的空白字符࿰…...
SpringBoot+MyBatisPlus+MySql+vue2+elementUi的案例、java访问数据库服务、java提供接口服务
文章目录 前言后端关键代码前端关键代码完整代码 前言 1、项目不使用前后端分离。 2、在创建SpringBoot的时候要注意各个插件间的版本问题。 3、后端技术SpringBootMyBatisPlusMySql。 4、前端技术vue2elementUi。 后端关键代码 简单介绍 1、数据库名称ssm_db 2、表名称tbl_bo…...
设计模式入门(二)观察者模式
设计模式入门 本系列所有内容参考自《HeadFirst设计模式》。因为书中的代码是采用java语言写的,博主这里用C语言改写。 这里采用讲故事的方式进行讲解。若有错误之处,非常欢迎大家指导。 设计模式:模式不是代码,而针对设计问题的…...
列化复杂的xml对应的类
你能帮我写一个序列化复杂的xml对应的类吗? c#代码 好的,可以试着为一个复杂的XML生成对应的C#类。这里我就简单的XML为例: <Book><Name>Design Patterns</Name><Author>Erich Gamma</Author><Pages>395</Pages><Chapters>…...
什么是软件开发生命周期(SDLC)?
软件开发生命周期(SDLC)指的是从软件项目开始到最终交付的整个过程。它是软件开发过程的指导框架,用于规划、开发、测试、部署和维护软件系统。 SDLC包含了一系列阶段,每个阶段都有特定的任务、活动和产物。这些阶段通常包括以下…...
计算机视觉中常用的角点检测算法及其作用
角点检测是计算机视觉中的重要任务,用于识别图像中的角点或关键点。以下是一些常用的角点检测算法: Harris角点检测:Harris角点检测是一种经典的角点检测算法,它通过计算图像中每个像素的角点响应函数来检测角点。Harris角点检测对…...
css3英文文字换行,超过两行...展示
需求:超过两行...展示 开发的过程中发现div内容中文可以换行英文不换行,导致长度会溢出。 是英文全英文的话浏览器会解析成一个单词, 加上这句就好了 word-break:break-all; 一开始不知道是会解析成一个单词,用字符串拼接处理…...
查各种金属非金属材料的物性参数方法
背景 上面给了任务,要做调研,各种材料的各种参数,高温的、低温的、常温的、常压的、高压的、低压的。 网上搜出来很多材料的参数都是各种卖材料的厂商给出的,也不晓得他们的测量结果可不可信,有没有一个权威机构背书…...
【数据库】查询PostgreSQL中所有表逻辑外键
引言 在PostgreSQL数据库中,逻辑外键是用于约束表之间关系的一种机制。然而,在某些情况下,我们可能需要删除和重建逻辑外键。本文将介绍如何查询PostgreSQL中所有表的逻辑外键,并指导您如何先删除再重新建立这些外键。 查询Post…...
【Kubernetes理论篇】2023年最新CKA考题+解析
文章目录 第一题:RBAC授权访问控制第二题:Node节点维护第三题:K8S集群版本升级第四题:ETCD数据库备份恢复第五题:NetworkPolicy网络策略第六题:Service四层负载第七题:Ingress七层负载第八题&am…...
【Linux】目录结构、路径
目录 1. 目录结构 1.1 基本概念 1.2 具体的目录结构 2. 路径 2.1 绝对路径和相对路径 2.2 特殊路径符 1. 目录结构 1.1 基本概念 Linux的目录结构是一个树形结构。 Windows系统可以拥有多个盘符,如 C盘、D盘、E盘。Linux没有盘符这个概念,只有一…...
Java-集合框架-List,Set,Map,队列
文章目录 Java集合框架:List,Set,Map,队列Java集合框架是什么?如何使用?ListSetMap队列 什么场景使用?优缺点是什么?ListSetMap队列 Java示例List示例Set示例Map示例队列示例 对比 J…...
第一章_线程基础知识
先拜拜大神 Doug Lea(道格.利) java.util.concurrent在并发编程中使用的工具包 为什么学习并用好多线程极其重要 硬件方面 摩尔定律失效 摩尔定律:它是由英特尔创始人之一Gordon Moore(戈登.摩尔)提出来的。其内容为…...
linux(centos7)定时关机解决方案
使用场景与痛点: 根据实际需求,每个星期五都要关闭服务器若干,痛点如下: 1是服务器比较多,按起来麻烦。2是因为周五时间点特殊,着急下班容易忘记关闭服务器。那些要关注才能看的博客,不是我喷&a…...
reactnative笔记
1、React Native 搭建开发环境和创建新项目并运行的详细教程_react项目怎么运行_AaVictory.的博客-CSDN博客 环境搭建遇到报错靠下面两个解决的(模拟器的adb和reactnative的adb版本不同,且都配置环境) 2、 adb server version (41) doesn‘t…...
家庭实验室应用:OpenClaw+gemma-3-12b-it管理个人科研数据
家庭实验室应用:OpenClawgemma-3-12b-it管理个人科研数据 1. 为什么需要AI助手管理科研数据 去年冬天,我在整理三年积累的植物生长实验数据时,发现了一个尴尬的事实:有37个Excel文件分散在6个不同文件夹里,命名规则混…...
个人创作者利器:AI净界RMBG-1.4,3秒完成以往30分钟的手动精修
个人创作者利器:AI净界RMBG-1.4,3秒完成以往30分钟的手动精修 1. 为什么你需要AI净界RMBG-1.4? 作为一名内容创作者,你是否经常遇到这些困扰: 拍摄的产品照片背景杂乱,需要花费大量时间手动抠图精心设计…...
FlowState Lab 日志分析与性能调优实战
FlowState Lab 日志分析与性能调优实战 1. 为什么需要关注模型服务性能 当你把FlowState Lab模型部署上线后,可能会遇到这样的情况:请求量一大,响应就开始变慢,甚至出现超时。这时候就需要关注服务的性能表现。性能调优不是玄学…...
Java互联网大厂求职面试实录:Spring Boot、微服务与全栈技术深度解析
Java互联网大厂求职面试实录:Spring Boot、微服务与全栈技术深度解析 面试场景介绍 本文以互联网大厂面试为背景,通过严肃的面试官与搞笑的水货程序员“谢飞机”的对话,深入探讨Java求职者面试中常见的技术问题。涵盖Java SE、Jakarta EE、Sp…...
乙巳马年春联生成终端步骤详解:横批居中与上下联基线对齐的CSS技巧
乙巳马年春联生成终端步骤详解:横批居中与上下联基线对齐的CSS技巧 1. 引言:从创意到像素的挑战 想象一下,你正在开发一个充满年味的Web应用——一个能自动生成马年春联的“皇城大门”。AI模型已经为你写出了文采斐然的上下联和横批&#x…...
SO1602A OLED字符屏驱动与FreeRTOS集成实战
1. SO1602A 162 OLED字符显示屏技术解析与嵌入式驱动实践SO1602A系列是基于单色OLED(Organic Light-Emitting Diode)技术的16字符2行点阵型字符显示模块,广泛应用于工业人机界面、仪器仪表、智能家电及小型IoT终端设备中。该模块不依赖背光&a…...
WZ文件编辑神器:Harepacker-resurrected从入门到精通的完整指南
WZ文件编辑神器:Harepacker-resurrected从入门到精通的完整指南 【免费下载链接】Harepacker-resurrected All in one .wz file/map editor for MapleStory game files 项目地址: https://gitcode.com/gh_mirrors/ha/Harepacker-resurrected Harepacker-resu…...
AI辅助开发:描述需求,快马AI自动生成旅行商问题算法与可视化
最近在做一个旅行商问题(TSP)的算法项目,想试试用AI辅助开发能有多高效。结果发现InsCode(快马)平台的AI功能真的帮了大忙,整个过程特别顺畅。这里分享一下我的体验。 需求分析阶段 刚开始我只是简单描述了需求:"需要一个用模拟退火算…...
国内专业的铣打机厂家哪家专业
在制造业蓬勃发展的今天,铣打机作为轴类零件加工的关键设备,其性能和质量直接影响着生产效率和产品质量。面对市场上众多的铣打机厂家,该如何选择一家专业可靠的呢?今天就为大家介绍一家在行业内颇具口碑的企业——无锡通亚数控智…...
Android安全漏洞案例分析:血淋淋的教训
Android安全漏洞案例分析:血淋淋的教训 Android安全漏洞案例分析:血淋淋的教训 案例一:Secret Token泄露导致账户劫持 漏洞危害:攻击者获取用户全部权限 某社交App在客户端硬编码了API密钥,攻击者通过反编译获取密钥…...
