文章目录
前言
用运Scala的语法实现前k个高频元素
一、前k个高频元素是什么?
给定一个非空的整数数组,返回其中出现频率前 k 高的元素。 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输入: nums = [1], k = 1 输出: [1]
二、使用步骤
代码如下:
def topKFrequent(nums: Array[Int], k: Int): Array[Int] = { import scala.math.Ordering.Implicits._ import scala.collection.mutable.PriorityQueue val map=mutable.HashMap[Int,Int]() val top = PriorityQueue[(Int,Int)]()(Ordering.by(_._2))//按照value的大小定义的最大堆 val res=new Array[Int](k) for (item <- nums)//先用map将元素出现的个数收集起来 map.put(item,map.getOrElse(item,0)+1) for (item <- map )//再用最大堆将(key,value)的键值对按出现的次数排序存储起来 top.enqueue(item) for (ind <- 0 until k)//取出前k个出现次数最多的元素值 res(ind)=top.dequeue()._1 res }