比如,一个数组为:[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个高频元素相关推荐

  1. 找出数组中前K大的值

    将数组划分为两部分,前K项为前K大值的集合,无需有序. while(true) {int flag = nums[k];while(i < k && nums[i] >= ...

  2. java怎么找出数组最小值,Java找出数组的最小值元素

    Java找出数组的最小值元素 1 说明 在此程序中,我们需要找出数组中存在的最小元素.这可以通过保持变量min来实现,该变量起初将保留第一个元素的值.通过将min的值与数组的元素进行比较来遍历数组.如 ...

  3. 找出数组中第i小元素(时间复杂度Θ(n)--最坏情况为线性的选择算法

    找出数组中第i小元素 期望时间复杂度:Θ(n) 最坏情况的时间复杂度Θ(n^2) int randomized_select(int *array,int start,int end,int inde ...

  4. Java实现找出数组中重复次数最多的元素以及个数

    /**数组中元素重复最多的数* @param array* @author shaobn* @param array*/public static void getMethod_4(int[] arr ...

  5. java快速找出数组或集合中重复的元素

    1.测试方法如下 public class TestArrayRepeat {public static void main(String[] args) {String [] idArr= {&qu ...

  6. python判断数组中是否有重复元素_python经典面试算法题4.1:如何找出数组中唯一的重复元素...

    本题目摘自<Python程序员面试算法宝典>,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中. [百度面试题] 难度系数:⭐⭐⭐ 考察频率:⭐⭐⭐⭐ 题目描述 ...

  7. leetcode:前 K 个高频元素、删除字符串中的所有相邻重复项、有多少小于当前数字的数字、有效的山脉数组、独一无二的出现次数(JavaScript)

    文章目录 347. 前 K 个高频元素 思路 1047. 删除字符串中的所有相邻重复项 思路 1365. 有多少小于当前数字的数字 思路 优化 继续优化 完整代码 941. 有效的山脉数组 思路 12 ...

  8. 算法---------前 K 个高频元素(Java版本)

    题目 给定一个非空的整数数组,返回其中出现频率前 k 高的元素.示例 1:输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2:输入: nums = [1], ...

  9. 2021-11-12:前 K 个高频元素。给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。提示:1 <= nums.length <=

    2021-11-12:前 K 个高频元素.给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素.你可以按 任意顺序 返回答案.提示:1 <= nums.length ...

最新文章

  1. mongoDB数据库操作工具库
  2. 【Whalepaper】NLP论文研读 - Keyword-Attentive Deep Semantic Matching
  3. lstm原理_通俗易懂的方式介绍LSTMGRU(动图)
  4. Java中使用Jedis连接Redis对Set进行操作的常用命令
  5. 如果把西游记倒过来看,这才是真正的社会
  6. JDK 12:实际中的切换语句/表达式
  7. python库下载安装报错_python安装第三方库报错visual c++ 14.0 is required
  8. java.lang中String=和equals()函数解析
  9. LaTex ——P2 源文件的基本结构
  10. 蓝桥杯 ADV-150算法提高 周期字串
  11. 多个项目共用同一个redis_比Redis快5倍的中间件,为啥这么快?
  12. AE Dulik骨骼绑定脚本!
  13. 如何读写8bit rgb彩色png图像
  14. Html网页设计-旅游景点介绍
  15. 【2018最新VR眼镜哪个好】什么VR眼镜好,全民评测,选最合适的
  16. 计算机大二总结范文,大二学年总结范文
  17. pink老师前端入门视频教程笔记(中)
  18. 计算机操作员初级理论知识试卷3,初级计算机操作员理论知识试卷.doc
  19. 微信 初始 for if 绑定数据 修改数据
  20. PiMuseum-游戏开发入门级教程-中国象棋-Chapter-2

热门文章

  1. 几何光学学习笔记(2)- 1.2 费马原理、马吕斯定律和成像
  2. boot中jar包部署的方式读取classes下的文件
  3. jmeter计算测试QPS
  4. Tensorflow技术实践之mnist_ with_summaries.py报错
  5. linux qt3编译出错,编译ARM 平台的qt4.7.3 遇到的一些问题总结
  6. 点、线、圆、矩形、抛物线的类定义_德语词汇-数学类
  7. 从零开始学习VIO笔记 --- 第三讲:基于优化的IMU和视觉信息融合
  8. 网易云信圈组上线实时互动频道,「破冰」弱关系社交
  9. 给每个物品一张“身份证”
  10. 重装系统(win10企业版)