Java如何找出数组中前k个高频元素
比如,一个数组为:[1,2,3,5,2,3,5,7,7,7,5,7 ]前2个高频元素就是7和5。
思路:最简单的办法就是采用两层for循环去遍历,时间复杂度为O(n2)。
方法二:先用快速排序将数组排序,然后依次找出前k个高频元素,时间复杂度O(NLogN)。
方法三:可以采用HashMap,这种方式时间复杂度为O(N),空间复杂度O(N)。
下面采用第三种方式:
public class test {
//定义统计数组里每个数字出现的次数HashMap;static HashMap<Integer, Integer> map;public static void main(String[] args) {int[] num = {1,2,3,5,2,3,5,7,7,7,5,7};ArrayList<Integer> nums = topK(num,4);System.out.println(nums);}
public static ArrayList<Integer> topK(int[] numbers , int k){map = new HashMap<Integer,Integer>();for(int i = 0; i<numbers.length; i++){Integer count = map.get(numbers[i]);if(count ==null){count=0;}map.put(numbers[i], count+1);}//构造一个数组来放map中的key;List<Integer>[] keyList = new List[numbers.length];for(int key:map.keySet()){ //map中数出现的次数;int a = map.get(key);//将map中的key放在arrayList的里if(keyList[a]==null){ArrayList<Integer> temp = new ArrayList<Integer>(); temp.add(key); keyList[a] = temp; }else{ keyList[a].add(key); } } ArrayList<Integer> res = new ArrayList<Integer>(); for(int i=keyList.length-1;i>=0&&res.size()<k;i--){ if(keyList[i]!=null){ res.addAll(keyList[i]); } }return res; }
}
Java如何找出数组中前k个高频元素相关推荐
- 找出数组中前K大的值
将数组划分为两部分,前K项为前K大值的集合,无需有序. while(true) {int flag = nums[k];while(i < k && nums[i] >= ...
- java怎么找出数组最小值,Java找出数组的最小值元素
Java找出数组的最小值元素 1 说明 在此程序中,我们需要找出数组中存在的最小元素.这可以通过保持变量min来实现,该变量起初将保留第一个元素的值.通过将min的值与数组的元素进行比较来遍历数组.如 ...
- 找出数组中第i小元素(时间复杂度Θ(n)--最坏情况为线性的选择算法
找出数组中第i小元素 期望时间复杂度:Θ(n) 最坏情况的时间复杂度Θ(n^2) int randomized_select(int *array,int start,int end,int inde ...
- Java实现找出数组中重复次数最多的元素以及个数
/**数组中元素重复最多的数* @param array* @author shaobn* @param array*/public static void getMethod_4(int[] arr ...
- java快速找出数组或集合中重复的元素
1.测试方法如下 public class TestArrayRepeat {public static void main(String[] args) {String [] idArr= {&qu ...
- python判断数组中是否有重复元素_python经典面试算法题4.1:如何找出数组中唯一的重复元素...
本题目摘自<Python程序员面试算法宝典>,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中. [百度面试题] 难度系数:⭐⭐⭐ 考察频率:⭐⭐⭐⭐ 题目描述 ...
- leetcode:前 K 个高频元素、删除字符串中的所有相邻重复项、有多少小于当前数字的数字、有效的山脉数组、独一无二的出现次数(JavaScript)
文章目录 347. 前 K 个高频元素 思路 1047. 删除字符串中的所有相邻重复项 思路 1365. 有多少小于当前数字的数字 思路 优化 继续优化 完整代码 941. 有效的山脉数组 思路 12 ...
- 算法---------前 K 个高频元素(Java版本)
题目 给定一个非空的整数数组,返回其中出现频率前 k 高的元素.示例 1:输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2:输入: nums = [1], ...
- 2021-11-12:前 K 个高频元素。给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。提示:1 <= nums.length <=
2021-11-12:前 K 个高频元素.给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素.你可以按 任意顺序 返回答案.提示:1 <= nums.length ...
最新文章
- mongoDB数据库操作工具库
- 【Whalepaper】NLP论文研读 - Keyword-Attentive Deep Semantic Matching
- lstm原理_通俗易懂的方式介绍LSTMGRU(动图)
- Java中使用Jedis连接Redis对Set进行操作的常用命令
- 如果把西游记倒过来看,这才是真正的社会
- JDK 12:实际中的切换语句/表达式
- python库下载安装报错_python安装第三方库报错visual c++ 14.0 is required
- java.lang中String=和equals()函数解析
- LaTex ——P2 源文件的基本结构
- 蓝桥杯 ADV-150算法提高 周期字串
- 多个项目共用同一个redis_比Redis快5倍的中间件,为啥这么快?
- AE Dulik骨骼绑定脚本!
- 如何读写8bit rgb彩色png图像
- Html网页设计-旅游景点介绍
- 【2018最新VR眼镜哪个好】什么VR眼镜好,全民评测,选最合适的
- 计算机大二总结范文,大二学年总结范文
- pink老师前端入门视频教程笔记(中)
- 计算机操作员初级理论知识试卷3,初级计算机操作员理论知识试卷.doc
- 微信 初始 for if 绑定数据 修改数据
- PiMuseum-游戏开发入门级教程-中国象棋-Chapter-2
热门文章
- 几何光学学习笔记(2)- 1.2 费马原理、马吕斯定律和成像
- boot中jar包部署的方式读取classes下的文件
- jmeter计算测试QPS
- Tensorflow技术实践之mnist_ with_summaries.py报错
- linux qt3编译出错,编译ARM 平台的qt4.7.3 遇到的一些问题总结
- 点、线、圆、矩形、抛物线的类定义_德语词汇-数学类
- 从零开始学习VIO笔记 --- 第三讲:基于优化的IMU和视觉信息融合
- 网易云信圈组上线实时互动频道,「破冰」弱关系社交
- 给每个物品一张“身份证”
- 重装系统(win10企业版)