力扣347. 前 K 个高频元素

在这里插入图片描述
思路:记录元素出现的次数用map;
要维护前k个元素,不至于把所有元素都排序再取前k个,而是新建一个堆,用小根堆存放前k个最大的数。
为什么是小根堆?因为堆每次出数据时只出堆顶,每次把当前最小的堆顶排出去
,把更大的换进来,到最后只会剩下几个最大的元素。
堆的排序复杂度是 log(K),所以整体是 n*long(K);

class Solution {public int[] topKFrequent(int[] nums, int k) {Map<Integer,Integer> map = new HashMap<>();//元素和次数 放入mapfor(int i : nums){map.put(i, map.getOrDefault(i,0)+1);}//int[] 里面只放2两个值k-v,用来代替map的元素PriorityQueue<int[]> xiaoDui = new PriorityQueue<>((nums1,nums2)->nums1[1]-nums2[1]);//小根堆//遍历map里的元素,维护一个K个元素的小根堆,里面放的是大数for(Map.Entry<Integer,Integer> item : map.entrySet()) {if(xiaoDui.size()<k){xiaoDui.add(new int[] {item.getKey(),item.getValue()});}else{//堆顶元素小时,出堆顶,入新元素if(xiaoDui.peek()[1]<item.getValue()) {xiaoDui.poll();xiaoDui.add(new int[] {item.getKey(),item.getValue()});}}}//把key取出来返回int[] ans = new int[k];for(int i=0;i<k;i++){ans[i] = xiaoDui.poll()[0];}return ans;}
}

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

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

相关文章

手动实现Tomcat底层机制+自己设计Servlet

文章目录 1.Tomcat整体架构分析自己理解 2.第一阶段1.实现功能2.代码1.TomcatV1.java 3.调试阶段1.阻塞在readLine导致无法返回结果 4.结果演示 3.第二阶段1.实现功能2.代码1.RequestHander.java2.TomcatV2.java 3.调试阶段1.发现每次按回车会接受到两次请求 4.结果演示 4.第三…

《牛客》-C小红的字符串构造

思路&#xff1a;我以符合条件的最极限情况来安排回文&#xff0c;即两个两个字符为一组回文&#xff0c;保证其不参与其他回文字符串的构造&#xff0c;以这样子的形式输出k个&#xff0c;剩下的都只输出不连续的当个字符&#xff08;‘a’i%26&#xff09; 看不到&#xff1…

使用Python实现K近邻算法

K近邻&#xff08;K-Nearest Neighbors&#xff0c;简称KNN&#xff09;是一种简单而有效的分类和回归算法&#xff0c;它通过比较新样本与训练样本的距离来进行预测。在本文中&#xff0c;我们将使用Python来实现一个基本的K近邻算法&#xff0c;并介绍其原理和实现过程。 什…

[dvwa] Command Injection

命令注入 0x01 low 没有过滤&#xff0c;直接利用 127.0.0.1 && ip a 函数 php_uname(mode) 动态地检查服务器的操作系统 ‘s’&#xff1a;操作系统名称 ‘n’&#xff1a;网络主机名 ‘r’&#xff1a;操作系统发行版本号 ‘v’&#xff1a;操作系统版本 ‘m’&…

书籍《笔记的方法》读后感

读完《笔记的方法》有几周的时间&#xff0c;书里有些记录的内容&#xff0c;觉得非常有价值的&#xff0c;自己的观点&#xff0c;当下读书&#xff0c;其实并没有那么高大尚&#xff0c;就是存粹陶冶下情操&#xff0c;读书还是有一定作用的&#xff0c;毕竟看书只能慢慢来&a…

淘宝API接口详解:如何高效利用API进行电商开发

淘宝API接口详解&#xff1a;如何高效利用API进行电商开发 请求示例&#xff0c;API接口接入Anzexi58 在电商行业蓬勃发展的今天&#xff0c;淘宝作为国内最大的电商平台之一&#xff0c;为商家和开发者提供了丰富的API接口。这些接口使得电商开发变得更加高效和便捷。本文将详…

【算法篇】三道题理解算法思想——认识BFS

BFS&#xff08;宽搜&#xff09; 宽度优先遍历和深度优先遍历组成了大家熟悉的搜索算法&#xff0c;这两种算法也是蓝桥杯之类竞赛题的常考思想&#xff0c;正巧马上蓝桥杯临近&#xff0c;博主也是刷了很多BFS相关的题型&#xff0c;在这篇文章中会从力扣上选取三道简单的宽搜…

一键无痕清理:高效删除Mac文件夹,释放宝贵存储空间

在当今重视隐私的时代&#xff0c;当转让或出借Mac电脑时&#xff0c;确保个人文件和敏感信息彻底清除至关重要。常规删除Mac上的文件和文件夹仅使数据看似消失&#xff0c;实际上它们仍驻留在硬盘上&#xff0c;存在被数据恢复软件找回的风险。为实现不可逆的删除效果&#xf…

【Linux】指令

1. 简单指令 whoami 显示当前登入账号名 ls /home 现在有的用户名 adduser 用户名 新加用户&#xff08;必须在root目录下&#xff09; passwd 用户名 给这个用户设置密码 userdel -r 用户名 删除这个用户 pwd 显示当前所处路径 stat 文件名 / 文件夹名 显示文件状…

c++ 数值计算<cmath>头文件介绍

<cmath> 是 C 标准库中的头文件&#xff0c;它提供了一系列数学函数和常量&#xff0c;用于执行各种数学计算。在 C 中&#xff0c;<cmath> 头文件中定义的函数和常量都位于 std 命名空间中。 以下是 <cmath> 头文件中常用的一些函数和常量&#xff1a; 常…

五分钟快速搭建五金行业小程序商城教程解析

作为五金行业的从业者&#xff0c;你可能想要拓展线上业务&#xff0c;提供更方便快捷的购物体验给顾客。而小程序商城成为了一种非常受欢迎的方式。但是&#xff0c;你可能觉得不懂代码无法实现这样的小程序商城。现在&#xff0c;我将通过以下步骤&#xff0c;教你如何在五分…

【JVM性能调优】- 年老代-提升速率

一、JVM垃圾收集相关调优策略 在JVM垃圾收集相关的调优实践中&#xff0c;通常都是以最优吞吐量和最短停顿时间来评价JVM的性能&#xff1a;吞吐量越高代表性能越好、暂停时间越短也代表越好。那么如何做到这两点呢&#xff1f;核心思想在于&#xff1a; 尽可能让对象在新生代…

模型CLIP-ViT-B-32-IMAGE.zip

模型CLIP-ViT-B-32-IMAGE.zip

TikTok防关联封号及操作需注意什么?

现在Tiktok对账户的管控一直非常严格。在运营Tiktok账户时&#xff0c;应该注意哪些方面来减少账户损失&#xff1f;以下是几个账户可能出现问题的原因。 网络环境问题 1.Tiktok账户对账户有严格的控制。我们经营Tiktok账户&#xff0c;手机应该模拟海外环境。一旦平台发现我…

全网短剧搜索前端源码开源分享可改自己的接口

全网短剧搜索前端源码 内含7000短剧资源(不支持在线播放&#xff09; 源码全开源&#xff0c;可以修改成自己的接口 178、226、347行修改 源码免费下载地址抄笔记 (chaobiji.cn)https://chaobiji.cn/

【算法】求平方根 - 二分法/牛顿迭代

题目 求一个数的平方根&#xff0c;要求返回小于等于平方根的正整数。 原理 二分法 遍历每次取中间数&#xff0c;大了就往小取&#xff0c;小了就往大取&#xff0c;直到取到正确的值。 牛顿迭代 求num的平方根&#xff0c;则是求 num / x 和 x 的均值&#xff0c;这个值…

linux 文件提权|属性修改

文章目录 suid&#xff08;set uid&#xff09;添加文件属性查看文件属性i &#xff08;immutable&#xff09; umask suid&#xff08;set uid&#xff09; 让文件在执行的时候具有属主&#xff08;对应文件 user &#xff09;的权限 chmod 7744 temp.txt 第一位的7表示权限位…

数据库的基本使用

一、数据库的简介 RDBMS简介&#xff1a; Relational Database Management System,通过表来表示关系类型。当前主要使用两种类型的数据库:关系型数据库和非关系型数据库。所谓的关系型数据库RDBMS是建立在关系模型基础上的数据库&#xff0c;借助于集合代数等数学概念和方法来…

全量知识系统 程序详细设计之架构设计:一个信息系统架构

统架构&#xff0c;整体设计分成了三部分--三种方面&#xff1a;信息nformation、系统Syste 原文 以下是对全知系统程序详细设计需要的架构规划的考虑。 全知系统架构是一个信息系统架构&#xff0c;整体设计分成了三部分&#xff08;三种“方面”&#xff09;&#xff1a;信…

蓝桥杯第十三届省赛C++B组(未完)

目录 刷题统计 修剪灌木 X进制减法 【前缀和双指针】统计子矩阵 【DP】积木画 【图DFS】扫雷 李白打酒加强版 DFS (通过64%&#xff0c;ACwing 3/11&#xff09;; DFS(AC) DP&#xff08;AC&#xff09; 砍竹子(X) 刷题统计 题目描述 小明决定从下周一开始努力刷题准…