算法15(力扣347)——前k个高频元素

1、问题

        给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。

2、示例

(1)

    输入: nums = [1,1,1,2,2,3], k = 2

    输出: [1,2]

(2)

    输入: nums = [1], k = 1

    输出: [1]

3、实现思路

  用map数据结构来记录数组中各项出现的次数,然后使用sort排序,通过slice删除数组中多于k的元素项

4、具体步骤

(1)创建集合去重,然后通过解构转为数组

(2)利用map和循环遍历,找到各项的出现频次

(3)利用sort排序,找到频次较高的项

(4)删除多余项( slice 获取开始删除位置之前的部分)

(5)返回

5、完整代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>前k个高频元素</title>
</head><body><p>给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。</p><p><p>输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]</p><p>输入: nums = [1], k = 1输出: [1]</p></p><p>用map数据结构来记录数组中各项出现的次数,然后使用sort排序,通过slice删除数组中多于k的元素项</p><script>let nums = [1,1,1,2,2,3], k = 2topKFrequent(nums, k)function topKFrequent(nums, k) {// 创建集合去重,然后通过解构转为数组let set = [...new Set(nums)]// 利用map和循环遍历,找到各项的出现频次let newMap = new Map()nums.forEach((item) =>{        if (newMap.has(item)) {// set方法设置键和值,利用get方法获取其中非重复项的频次newMap.set(item,newMap.get(item)+1)}else{newMap.set(item,1)}})// 利用sort排序,找到频次较高的项set.sort((a,b)=>newMap.get(b) - newMap.get(a))// 删除多余项( slice 获取开始删除位置之前的部分)set = set.slice(0, k)return set};</script>
</body></html>

6、力扣通过代码

/*** @param {number[]} nums* @param {number} k* @return {number[]}*/
var topKFrequent = function(nums, k) {// 创建集合去重,然后通过解构转为数组let set = [...new Set(nums)]// 利用map和循环遍历,找到各项的出现频次let newMap = new Map()nums.forEach((item) =>{        if (newMap.has(item)) {// set方法设置键和值,利用get方法获取其中非重复项的频次newMap.set(item,newMap.get(item)+1)}else{newMap.set(item,1)}})// 利用sort排序,找到频次较高的项set.sort((a,b)=>newMap.get(b) - newMap.get(a))// 删除多余项( slice 获取开始删除位置之前的部分)set = set.slice(0, k)return set};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/69796.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

防御保护-----前言

HCIE安全防御 前言 计算机病毒 ​ 蠕虫病毒----->具备蠕虫特性的病毒&#xff1a;1&#xff0c;繁殖性特别强&#xff08;自我繁殖&#xff09;&#xff1b;2&#xff0c;具备破坏性 蠕虫病毒是一种常见的计算机病毒&#xff0c;其名称来源于它的传播方式类似于自然界中…

IntelliJ IDEA 2024.1.4版无Tomcat配置

IntelliJ IDEA 2024.1.4 (Ultimate Edition) 安装完成后&#xff0c;调试项目发现找不到Tomcat服务&#xff1a; 按照常规操作添加&#xff0c;发现服务插件中没有Tomcat。。。 解决方法 1、找到IDE设置窗口 2、点击Plugins按钮&#xff0c;进入插件窗口&#xff0c;搜索T…

docker compose部署flink集群

本次部署2个jobmanager和3个taskmanager 一、部署zookeeper集群 flink使用zookeeper用作高可用 部署集群参考&#xff1a;docker compose部署zookeeper集群-CSDN博客 二、创建目录及配置文件 创建timezone文件&#xff0c;内容填写Asia/Shanghai 手动创建目录&#xff1a…

Spring Boot 配置JPA数据库主从读写分离失败及解决办法

因为是老项目, Spring Boot 是1.4, 使用 AbstractRoutingDataSource 来做主从切换, 配置切面类在进入事务时切换成主库, 但实际运行起来却失败, 写操作路由到了从库 查了很多文章, 试了很多方法都无效, 包括修改注解 Transactional 的 propagation 属性, 清空主从标记等等 打…

XSS 常用标签及绕过姿势总结

XSS 常用标签及绕过姿势总结 一、xss 常见标签语句 0x01. 标签 <a href"javascript:alert(1)">test</a> <a href"x" onfocus"alert(xss);" autofocus"">xss</a> <a href"x" onclickeval(&quo…

如何在Kickstart自动化安装完成后ISO内拷贝文件到新系统或者执行命令

如何在Kickstart自动化安装完成后ISO内拷贝文件到新系统或者执行命令 需求 在自动化安装操作系统完成后&#xff0c;需要对操作系统进行配置需要拷贝一些文件到新的操作系统中需要运行一些脚本 问题分析 Linux安装操作系统时&#xff0c;实际上是将ISO镜像文件中的操作系统…

【Django】 templates模板与static静态文件

1.templates模板 在app01(你创建的app名称)文件夹下&#xff0c;创建templates文件夹&#xff0c;其中存放想要返回的html文件 对应关系如下 除了上面的方式&#xff0c;还可以在项目根目录下创建templates文件夹&#xff0c;这时需要在settings.py文件中增加一行代码&#xf…

解锁电商数据宝藏:淘宝商品详情API实战指南

在电商蓬勃发展的今天&#xff0c;数据已成为驱动业务增长的核心引擎。对于商家、开发者以及数据分析师而言&#xff0c;获取精准、实时的商品数据至关重要。而淘宝&#xff0c;作为国内最大的电商平台&#xff0c;其海量商品数据更是蕴含着巨大的价值。 本文将带你深入探索淘…

YOLO11 【二】 【速通 训练+推理+导出】

一、 vscode 配置 conda 环境 选择默认配置修改配置文件 %windir%\System32\cmd.exe “/K” D:\Software\Anaconda3\Scripts\activate.bat D:\Software\Anaconda3 将该命令加到配置文件后面 ** “/K” D:\Software\Anaconda3\Scripts\activate.bat D:\Software\Anaconda3 **…

高等代数笔记—线性变换

latex花体字母与花体数字 https://blog.csdn.net/weixin_39589455/article/details/133846783 https://blog.csdn.net/orz_include/article/details/123645710线性变换 线性空间 V V V到自身的映射称为 V V V的一个变换&#xff0c;最基本的是线性变换。 定义&#xff1a;变换…

UWB功耗大数据插桩调研

一、摘要 UWB功耗点 插桩点 日志关键字 电流 蓝牙持锁 BatteryStats的锁统计 vendor_bluetooth_lock 30~40mA 测距 UwbSessionManager.startRanging UwbSessionManager.stoptRanging 或接入fadiKey Uwb状态广播 "com.fadiui.dkservice.action.uwb.state.change&q…

开发完的小程序如何分包

好几次了&#xff0c;终于想起来写个笔记记一下 我最开始并不会给小程序分包&#xff0c;然后我就各种搜&#xff0c;发现讲的基本上都是开发之前的小程序分包&#xff0c;可是我都开发完要发布了&#xff0c;提示我说主包太大需要分包&#xff0c;所以我就不会了。。。 好了…

前端vue项目打包部署

一、打包 可以在vscode中输入命令打包&#xff0c;也可以通过vscode的图形化界面打包 打包完成后&#xff0c;目录中&#xff0c;会生成dist文件。打包后&#xff0c;数据占用空间更小&#xff0c;比如把换行都去掉了。 完成打包 二、部署 前端主流部署服务器是 Ngix &#x…

PyTorch 中 `torch.cuda.amp` 相关警告的解决方法

在最近的写代码过程中&#xff0c;遇到了两个与 PyTorch 的混合精度训练相关的警告信息。这里随手记录一下。 警告内容 警告 1: torch.cuda.amp.autocast FutureWarning: torch.cuda.amp.autocast(args...) is deprecated. Please use torch.amp.autocast(cuda, args...) i…

C++ STL容器之set使用及复现

cset 1. 关联式容器 vector、list、deque、forward_list(C11) 等STL容器&#xff0c;其底层为线性序列的数据结构&#xff0c;里面存储的是元素本身&#xff0c;这样的容器被统称为序列式容器。而 map、set 是一种关联式容器&#xff0c;关联式容器也是用来存储数据的&#x…

激光工控机在精密制造中的应用与优势

在精密制造中&#xff0c;激光工控机可以用于许多场景例如 激光切割与雕刻&#xff1a;用于金属、塑料、陶瓷等材料的精密切割和雕刻&#xff0c;适用于汽车、航空航天、电子等行业&#xff1b;可实现复杂图案和高精度加工&#xff0c;满足微米级精度要求。 激光焊接&#xf…

第 12 天:行为树(Behavior Tree),让 AI 更智能!

&#x1f3af; 目标&#xff1a; ✅ 理解 Unreal Engine 5 行为树&#xff08;Behavior Tree&#xff09; ✅ 创建行为树&#xff08;BT&#xff09;和黑板&#xff08;Blackboard&#xff09;管理 AI 状态 ✅ 使用任务&#xff08;Task&#xff09;让 AI 巡逻、追踪、攻击玩家…

AI眼力训练营:图像标注让机器变聪明

前言 在人工智能的世界里,图像标注就像给机器装上眼睛,让它不再是“瞎子”,而是能清楚看懂图像中的每个物体。想象一下,当我们人类刚开始学习时,常常要借助老师的帮助,指着一只狗说:“这就是狗。”AI也是一样,需要通过大量的“标注”来学会识别图像中的每个物体,就像…

Android 10.0 framework中增加开启和关闭飞行模式的接口

1.前言 在10.0的系统rom定制开发中,在某些产品定制化开发中,需要能通过接口来控制和开启飞行模式的相关 功能,所以就需要从系统settings和下拉状态栏中来看下相关的源码来实现相关功能 2.framework中增加开启和关闭飞行模式的接口的核心类 packages/services/Car/tests/C…

fun-transformer学习笔记-Task1——Transformer、Seq2Seq、Encoder-Decoder、Attention之间的关系

Transformer、Seq2Seq、Encoder-Decoder、Attention由这四者之间的关系可以从模型架构的发展脉络来理解&#xff1a; Seq2Seq 与 Encoder–Decoder 模型 “Seq2Seq”&#xff08;sequence‐to‐sequence&#xff09;是一类用于将一个变长序列映射为另一个变长序列的任务&#x…