2021-11-12:前 K 个高频元素。给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。提示:1 <= nums.length <= 105,k 的取值范围是 [1, 数组中不相同的元素的个数],题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。进阶:你所设计算法的时间复杂度 必须 优于 O(n log n) ,其中 n 是数组大小。力扣347。

答案2021-11-12:

门槛堆。小根堆。

代码用golang编写。代码如下:

package mainimport ("fmt""sort"
)func main() {nums := []int{1, 1, 1, 2, 2, 3}k := 2ret := topKFrequent(nums, k)fmt.Println(ret)
}type Node struct {num   intcount int
}func NewNode(k int) *Node {res := &Node{}res.num = kres.count = 1return res
}func topKFrequent(nums []int, k int) []int {map0 := make(map[int]*Node)for _, num := range nums {if _, ok := map0[num]; !ok {map0[num] = NewNode(num)} else {map0[num].count++}}heap := make([]*Node, 0)for _, node := range map0 {if len(heap) < k || (len(heap) == k && node.count > heap[0].count) {//heap.add(node);heap = append(heap, node)sort.Slice(heap, func(i, j int) bool {return heap[i].count > heap[j].count})}if len(heap) > k {heap = heap[1:]}}ans := make([]int, k)index := 0for len(heap) > 0 {ans[index] = heap[0].numheap = heap[1:]index++}return ans
}

执行结果如下:


左神java代码

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

  1. 46. 全排列:给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

    题目描述 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 .你可以 按任意顺序 返回答案. 示例 1: 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[ ...

  2. 输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。

    输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分. 我们首先会想到常规方法:创建一个临时数组,遍历所给数组中的所有元素,将偶数 ...

  3. Java:怎么判断一个字节数组包含另一个字节数组,并且字节顺序一致

    目标 实现一个字节数组A包含另一个字节数组B的算法,顺序一致 原理 设置一个命中变量,初始化为0,记录两个数组连续连续命中的字节数量,命中数量等于字节数组B的长度时,返回true,如果循环到最后一个字 ...

  4. 2021/11/12

    复盘: 7 : 50 − 9 : 30 7:50 - 9 : 30 7:50−9:30 审完题后 , 开始肝 T 1 T1 T1. T 1 T1 T1推出来了性质:后五名所得奖励在按顺序排好后一定挨在 ...

  5. C语言中输出两个数中的较大值(2021.11.12)

    方法一  if else语句 #include <stdio.h> int main(){ int a, b, max;scanf("%d %d", &a, & ...

  6. 中国互联网大厂市值排名 单位:亿美元,市值截取时间 2021.11.12

    互联网大厂市值排名 一线大厂(3家) 新一线大厂(7家) 二线大厂(10家) 三线互联网(30家) 一线大厂(3家) 騰讯(6000) 阿里(4550) 字节(估 3700) 新一线大厂(7家) 美团 ...

  7. 折半查找一个有序数组中的一个元素,即二分法

    折半查找法(二分法) 在写程序中,我们需要注意的是函数的要求,需要你输入的是下标,那么下标是由low和high共同求得.我会在下面给大家介绍的. 运行结果 代码如下 #include<stdio ...

  8. 12.前K个高频元素---使用优先队列和哈希表解决

    一.目的 写本片博客的目的是为了让自己和大家了解优先队列的用法以及HashMap的两种遍历方式 二.首先讲解一下什么是优先队列 PriorityQueue保存队列元素的顺序不是它们加入队列的顺序,而是 ...

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

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

最新文章

  1. Java 巨坑篇之无底深坑Long类型
  2. 基于 TensorFlow 在手机端实现文档检测
  3. 18 常用模块 random shutil shevle logging sys.stdin/out/err
  4. HTML5 Web SQL数据库
  5. linux php常用命令,php调用Linux系统常用命令
  6. node.js的下载,安装以及卸载
  7. 程序代码传输工具:飞秋官方下载
  8. 如何从io.Reader 中读数据
  9. 电脑桌面游戏_二次元游戏的高人气角色,不管男女都有一个特点,是巧合吗?...
  10. 【C++ Primer】 神秘的 sizeof(union) 、sizeof(struct) 和内存对齐技术
  11. Class.forName()方法抛出异常
  12. atitit.gui界面纵向居中总结
  13. 龙卷风路径_关于龙卷风,看这篇文章就够了
  14. [Git] Squash all of my commits into a single one and merge into master
  15. Visio2019中插入数学公式
  16. 2021年7月国产数据库大事记
  17. 高效记忆/形象记忆(12)110数字编码表 61-70
  18. ubuntu文件名乱码(转载)
  19. 【优秀毕设V2.0】基于树莓派的OpenCV-Python摄像头人脸追踪及手势识别、网络地址推流及远程控制系统(多功能系统、含演示视频)
  20. [Flink 日记]Exceeded checkpoint tolerable failure threshold.

热门文章

  1. 历届试题 合根植物 C语言,植物营养历年真题(整理).doc
  2. web前端面试学习指南
  3. Spectral Algorithm
  4. C 语 言制定了一套 ANSI 标准
  5. 线性代数 --- 用内积重新定义矩阵的转置(个人学习笔记)
  6. hach vue 跳转_Vue路由实现、路由导航、路由模式
  7. Pytorch基础学习(第一章-PyTorch基础概念)
  8. 因一个 Bug,谷歌、GitHub、亚马逊等网站全球大范围宕机!
  9. AMD锐龙R3 5400U性能怎么样?相当于什么水平级别
  10. 让vscode完美支持go vendor的代码跳转(使用vscode必看)