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

cpp刷题打卡20——前k个高频元素

前k个高频元素题目描述给你一个整数数组nums和一个整数k请你返回其中出现频率前k高的元素。你可以按任意顺序返回答案。题目代码class Solution { public: class Mycompare { public: bool operator()(pairint, int v1, pairint, int v2) { return v1.second v2.second; } }; vectorint topKFrequent(vectorint nums, int k) { unordered_mapint, int map; for(int i 0; inums.size(); i){ map[nums[i]]; } vectorpairint, int ve; while(!map.empty()){ ve.push_back(*(map.begin())); map.erase(map.begin()); } sort(ve.begin(), ve.end(), Mycompare()); vectorint result(k); for(int i 0; ik; i){ result[i] ve[i].first; } return result; } };思路就是先统计每个元素出现的频次对频次从大到小排序输出前k个。统计频次的话首先就想到用map键值对的形式操作key值为元素value为其出现的频次要用unordered_map虽然map的排序是按照key值排的我们需要按照value排。接下来是从大到小排序想到sort默认sort是升序的然后就用class Mycompare改变一下其排序顺序。最后就是输出最高频次的前k个要注意我们比的是value但是最后输出的是key不要把unordered_map里面的搞混淆了。优化class Solution { public: class Mycompare { public: bool operator()(pairint, int v1, pairint, int v2) { return v1.second v2.second; } }; vectorint topKFrequent(vectorint nums, int k) { unordered_mapint, int map; for(int i 0; inums.size(); i){ map[nums[i]]; } priority_queuepairint, int, vectorpairint, int, Mycompare pri_que; for(unordered_mapint, int::iterator it map.begin(); it!map.end(); it){ pri_que.push(*it); if(pri_que.size() k){ pri_que.pop(); } } vectorint result(k); for(int i k-1; i0; i--){ result[i] pri_que.top().first; pri_que.pop(); } return result; } };用了优先级队列priority_queue由于题目中只需要前k个高频元素并不需要我们把所有的频次都进行排序也就是只排序k个元素这也正是优化之处。在默认的情况下优先级队列priority_queue是利用大顶堆完成排序的就是从大到小排我们需要的是从小到大排所以需要指定一下排列顺序。为什么这里需要从小到大排序呢我们分明是找前k个高频次的元素。这是因为我们想要只统计最大的前k个元素不想要全部都排序所以只有小顶堆能满足我们的要求当队列个数大于k个时我们就可以直接用pop弹出也就是每次将最小的元素弹出了最后留在小顶堆里的就是前k个最大元素。注意在写快排的compare函数的时候return leftright 就是从大到小return leftright就是从小到大而优先级队列的定义正好是反过来的。通过这个优化我们也从时间复杂度为O(nlogn)降到O(nlogk)。

相关文章:

cpp刷题打卡20——前k个高频元素

前k个高频元素 题目描述&#xff1a; 给你一个整数数组 nums 和一个整数 k &#xff0c;请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 题目代码&#xff1a; class Solution { public:class Mycompare{public:bool operator()(pair<int, int>&…...

基于docker的LLM服务部署

下载 拿qwen-3.5-9B 为例&#xff1a; https://www.modelscope.cn/models/Qwen/Qwen3.5-9B 首先下模型 git lfs install git clone https://www.modelscope.cn/Qwen/Qwen3.5-9B.git 然后下对应docker,框架我用的是vllm docker pull vllm/vllm-openai:qwen3_5 &#xff08;官…...

城市环境监测传感器—实时监测与分析环境数据

城市环境监测传感器是智慧城市建设中不可或缺的“感知神经”&#xff0c;通过实时监测与分析环境数据&#xff0c;为城市治理、生态保护与居民健康提供科学支撑。能够测量环境中的氧气、二氧化碳、氮气等气体成分&#xff0c;以及温度、湿度、噪音等参数。部分传感器还集成气象…...

【开题答辩全过程】以 户外用品比价系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…...

C的数组概念

一、一维数组1.1 概念数组是一组相同数据类型的元素的集合&#xff0c;这些元素在内存中是连续存储的&#xff0c;并且通过一个唯一的数组名称和索引来访问。1.2 定义一维数组的定义语法格式&#xff1a;数据类型 数组名 [元素个数];1.3 访问与操作1.3.1 访问访问数组元素通过下…...

电商系统商品管理模块避坑指南:Spring Boot+MySQL+Redis多数据源配置实战

电商系统商品管理模块避坑指南&#xff1a;Spring BootMySQLRedis多数据源配置实战 在电商系统开发中&#xff0c;商品管理模块作为核心业务组件&#xff0c;其稳定性和性能直接影响用户体验和平台收益。本文将深入剖析基于Spring Boot框架的多数据源配置实践&#xff0c;结合M…...

RK3588 Android 12 异显功能开发实战:命令行与Presentation双方案解析

1. 初识RK3588的异显能力&#xff1a;不止是“多接一个屏幕” 如果你手头有一块搭载了瑞芯微RK3588芯片的开发板&#xff0c;比如Firefly的ITX-3588J或者Rock 5B&#xff0c;并且已经刷好了Android 12系统&#xff0c;那你手里握着的其实是一个“多屏怪兽”的潜力股。很多朋友刚…...

新手必看:ARM、树莓派、Arduino和单片机到底该怎么选?从零到一的硬件开发指南

从零到一&#xff1a;如何为你的创意项目挑选最合适的硬件平台 最近几年&#xff0c;身边想动手做点“智能硬件”的朋友越来越多了。有人想给阳台的花花草草做个自动浇水器&#xff0c;有人想改造家里的灯光实现语音控制&#xff0c;还有人雄心勃勃地想从零开始造一台迷你机器人…...

短链接服务选型指南:自建vs第三方API?从Bitly到PicSee的5大商业方案横评

短链接服务选型实战&#xff1a;企业技术决策者的成本、功能与场景化评估指南 在数字营销与用户运营的日常工作中&#xff0c;我们几乎每天都在与链接打交道。无论是电商大促的活动页面、社交媒体上的新品预告&#xff0c;还是内部系统生成的冗长报表地址&#xff0c;一个简洁、…...

2024年网络异常检测避坑指南:为什么你的ELK+Suricata方案总漏报?

2024年企业级网络异常检测实战指南&#xff1a;从规则引擎到AI驱动的技术跃迁 当企业网络流量以每年30%的速度增长时&#xff0c;传统安全设备的告警面板正在变成"狼来了"的故事现场。某金融科技公司的安全团队负责人曾向我展示他们的监控大屏&#xff1a;每天超过2万…...

【限时开源】Dify企业版增强套件v2.0:内置审计水印、敏感词动态策略引擎、RAG溯源追踪模块——仅开放首批50家企业下载权限

第一章&#xff1a;Dify企业版增强套件v2.0核心能力概览Dify企业版增强套件v2.0在原有开源能力基础上&#xff0c;深度集成企业级安全、治理与规模化部署需求&#xff0c;构建起面向生产环境的AI应用全生命周期支撑体系。该版本聚焦三大演进方向&#xff1a;模型纳管标准化、工…...

Gemma-3-12b-it极简交互设计:侧边栏上传+主界面聚焦的UX逻辑解析

Gemma-3-12b-it极简交互设计&#xff1a;侧边栏上传主界面聚焦的UX逻辑解析 如果你用过一些AI工具&#xff0c;可能会被复杂的界面搞得晕头转向。左边是密密麻麻的参数滑块&#xff0c;右边是各种看不懂的模型选项&#xff0c;中间可能还有个需要填写的复杂表单。很多时候&…...

FANUC宏变量实战:从局部到系统的数据管理全解析

1. 宏变量&#xff1a;你的机床“记事本”与“黑匣子” 如果你操作过FANUC系统的数控机床&#xff0c;肯定对编写加工程序不陌生。但你是否遇到过这样的烦恼&#xff1a;想记录一把刀到底加工了多少个零件&#xff0c;或者想记住某个特定工序的某个补偿值&#xff0c;下次开机还…...

奇安信数据安全防护全家桶实战:从数据库防火墙到隐私卫士的完整配置指南

奇安信数据安全防护全家桶实战&#xff1a;从数据库防火墙到隐私卫士的完整配置指南 在数字化转型的浪潮中&#xff0c;企业的核心资产——数据&#xff0c;正面临着前所未有的安全挑战。数据泄露、勒索攻击、内部违规操作等事件频发&#xff0c;单一的安全产品往往难以应对复杂…...

SpringBoot整合RocketMQ实战:从消息发送到消费的完整流程(含Docker部署指南)

SpringBoot与RocketMQ深度整合实战&#xff1a;从基础到Docker化部署 在当今分布式系统架构中&#xff0c;消息队列已成为解耦服务、削峰填谷的关键组件。RocketMQ作为阿里巴巴开源的高性能分布式消息中间件&#xff0c;凭借其高吞吐、低延迟和强一致性的特点&#xff0c;在电商…...

2026最新版!AI免费tokens全攻略,零成本玩转OpenClaw

原文链接&#xff1a;2026最新版&#xff01;AI免费tokens全攻略&#xff0c;零成本玩转OpenClaw...

树莓派5实战:用NCNN跑通YOLOv5目标检测(附完整代码)

树莓派5实战&#xff1a;用NCNN跑通YOLOv5目标检测&#xff08;附完整代码&#xff09; 最近在捣鼓树莓派5&#xff0c;想在上面跑点“硬核”的视觉应用&#xff0c;比如实时目标检测。市面上方案不少&#xff0c;但要么太重&#xff0c;动辄几百兆的框架塞不进小小的SD卡&…...

Web原生数据库工具选型指南:SQLynx vs Navicat在云环境下的真实表现

Web原生数据库工具选型指南&#xff1a;SQLynx vs Navicat在云环境下的真实表现 最近和几个技术团队负责人聊天&#xff0c;话题总绕不开一个痛点&#xff1a;数据库管理工具在云时代好像有点“水土不服”。过去&#xff0c;我们习惯在本地装个客户端&#xff0c;连上数据库就开…...

GTE模型在在线教育中的应用:学习资源智能推荐

GTE模型在在线教育中的应用&#xff1a;学习资源智能推荐 1. 引言 在线教育平台面临着一个共同的难题&#xff1a;如何从海量的学习资源中&#xff0c;为每个学生找到最适合的内容&#xff1f;传统的关键词匹配方式往往力不从心&#xff0c;学生搜索"机器学习入门"…...

Intel(R) Wireless-AC 9560网络适配器故障排查指南(从设备管理器到网络重置)

1. 当你的Wi-Fi突然“消失”&#xff1a;从设备管理器开始诊断 不知道你有没有遇到过这种情况&#xff1a;正用着笔记本电脑&#xff0c;突然发现右下角的Wi-Fi图标不见了&#xff0c;或者它变成了一个地球仪&#xff0c;提示你“未连接”。你点开网络列表&#xff0c;空空如也…...

5分钟快速上手腾讯混元翻译模型HY-MT1.5-1.8B,开箱即用

5分钟快速上手腾讯混元翻译模型HY-MT1.5-1.8B&#xff0c;开箱即用 你是不是也遇到过这样的场景&#xff1f;想给海外客户发一封邮件&#xff0c;对着翻译软件纠结半天&#xff0c;总觉得词不达意&#xff1b;或者想快速翻译一份技术文档&#xff0c;却发现免费的在线工具要么…...

从医疗设备到工业控制:Multisim电路设计的5个实战技巧(以呼叫系统为例)

从医疗设备到工业控制&#xff1a;Multisim电路设计的5个实战技巧&#xff08;以呼叫系统为例&#xff09; 很多硬件工程师在从教学案例转向实际工业项目时&#xff0c;总会遇到一个尴尬的境地&#xff1a;仿真跑得风生水起&#xff0c;一到实际打板就问题频出。这中间的鸿沟&a…...

通达OA header伪造漏洞实战:从原理到未授权访问

1. 通达OA身份认证绕过漏洞初探 第一次听说通达OA这个漏洞时&#xff0c;我正在给客户做安全审计。当时发现一个奇怪的现象&#xff1a;明明没有登录&#xff0c;却能直接访问后台管理页面。后来深入研究才发现&#xff0c;原来是header伪造导致的身份认证绕过问题。这个漏洞影…...

国产MCU USB多协议转换器设计与实现

1. 项目概述USB多协议转换器是一种面向嵌入式系统调试、传感器数据汇聚与工业现场通信协同的硬件桥接设备。其核心目标是将单一USB主机接口统一映射为多路异构物理层通信通道&#xff0c;实现上位机对底层多样化外设的集中管控与数据调度。本设计基于国产高性能Cortex-M4F内核M…...

STM32 TM1637数码管驱动:IIC时序解析与Proteus仿真验证

1. 从零开始&#xff1a;为什么选择STM32和TM1637这对“黄金搭档”&#xff1f; 大家好&#xff0c;我是老李&#xff0c;一个在嵌入式领域摸爬滚打了十多年的“老码农”。今天想和大家聊聊一个非常经典且实用的组合&#xff1a;用STM32的GPIO口去驱动TM1637数码管模块。很多刚…...

Ubuntu 22.04 LTS 服务器 SSH 密钥配置与自动化部署实践

1. 从零开始&#xff1a;为什么SSH密钥是服务器管理的基石 如果你刚接触服务器运维&#xff0c;或者还在用密码登录你的Ubuntu 22.04服务器&#xff0c;那今天这篇分享可能会彻底改变你的工作流。我管理过上百台服务器&#xff0c;从早期的密码登录到后来的密钥认证&#xff0c…...

STM32G070多传感器融合终端设计:温湿度/空气质量/称重/RTC一体化嵌入式系统

1. 项目概述本项目是一款集成环境参数监测、实时时钟显示与便携式电子称重功能的嵌入式终端设备&#xff0c;面向嵌入式学习、环境监测原型开发及小型IoT节点应用场景。系统以STM32G070CBT6为主控核心&#xff0c;运行FreeRTOS实时操作系统&#xff0c;通过多任务协同调度实现温…...

探秘RestTemplateBuilder:为何连接超时设置频频‘失效’及最佳实践

1. 从一次深夜告警说起&#xff1a;你的超时设置真的生效了吗&#xff1f; 我记得很清楚&#xff0c;那是一个周五的晚上&#xff0c;正准备下班&#xff0c;突然手机开始疯狂震动。监控系统显示&#xff0c;我们一个核心服务的接口响应时间飙到了60秒以上&#xff0c;大量请求…...

构建城市可信数据空间:从标准到实践的全方位指南

1. 城市数据困局&#xff1a;我们为什么需要一个“可信”的空间&#xff1f; 想象一下&#xff0c;你所在的城市&#xff0c;交通部门掌握着实时车流数据&#xff0c;环保部门监测着空气质量&#xff0c;卫健委管理着医疗资源分布&#xff0c;而商业平台则记录着市民的消费习惯…...

基于AIR001的FRS数字对讲机设计与实现

1. 项目概述本项目是一款基于AIR001主控芯片与SR_FRS_2WUS无线对讲模块构建的便携式数字对讲终端&#xff0c;定位于轻量级、低功耗、高可用性的短距语音通信场景。系统在城市复杂电磁环境下实测通信距离超过1公里&#xff0c;语音清晰可辨&#xff0c;具备完整的频道管理、亚音…...