golang中怎么利用leetcode 求最小的k个数
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇文章为大家展示了golang中怎么利用leetcode 求最小的k个数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。输入整数数组 arr ,找出其中最小的
千家信息网最后更新 2026年11月02日golang中怎么利用leetcode 求最小的k个数
本篇文章为大家展示了golang中怎么利用leetcode 求最小的k个数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。
示例 1:
输入:arr = [3,2,1], k = 2
输出:[1,2] 或者 [2,1]
示例 2:
输入:arr = [0,1,2,1], k = 1
输出:[0]
限制:
0 <= k <= arr.length <= 10000
0 <= arr[i] <= 10000
解题思路
1,本题其实就是实现大根堆
2,堆的性质:
A,堆逻辑上是一棵完全二叉树,实现上是一个数组
B,对于节点i,左孩子是2*i+1 ,右孩子是 2*i+2,父亲节点是 (i-1)/2
3,未达到堆容量时,需要建堆。把元素加到数组末尾,然后调整堆:
如果当前节点值比父亲节点值大,交换元素,然后递归调整父亲节点
4,达到堆容量后,比较元素和堆顶元素大小,如果比堆顶元素小,替换堆顶元素,然后调整堆:
和左右孩子中较大者交换,然后递归调整堆。
代码实现
func getLeastNumbers(arr []int, k int) []int {if k<1{return []int{}}if len(arr)<=k{return arr}h:=heap{cap:k}for i:=0;ih.data=append(h.data,arr[i])h.build(i)}for i:=k;iif arr[i]h.data[0]= arr[i]h.heaplify(0)}}return h.get()}type heap struct{cap intdata []int}func(this*heap)heaplify(i int){l:=2*i+1r:=2*i+2if l>=this.cap{return}if r>=this.cap{if this.data[l]>this.data[i]{this.data[l],this.data[i]=this.data[i],this.data[l]}return}if this.data[l]>this.data[r]{if this.data[l]>this.data[i]{this.data[l],this.data[i]=this.data[i],this.data[l]this.heaplify(l)}}else{if this.data[r]>this.data[i]{this.data[r],this.data[i]=this.data[i],this.data[r]this.heaplify(r)}}}func (this*heap)build(i int){p:=(i-1)/2if p>=0 && this.data[p]this.data[p],this.data[i]=this.data[i],this.data[p]this.build(p)}}func(this*heap)get()[]int{return this.data}
上述内容就是golang中怎么利用leetcode 求最小的k个数,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。
元素
节点
最小
调整
输入
个数
孩子
数组
父亲
内容
容量
就是
技能
数字
知识
示例
递归
输出
简明
较大
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广东猪兼强互联网科技有限公司
为想互联网科技怎么样
互联网科技行业发展
科技互联网公司装修
盈实互联网科技
互联网科技公司怎么样
互联网金融科技平台
上海致骋互联网科技
广州凡科互联网科技
互联网科技网站
现代科技和互联网有关系吗
浙江互联网科技研学营
智腾互联网科技有限公司
电子科技大学互联网创业大赛
徐州市互联网科技有限公司
上海钢联属于互联网科技股吗
四川互联网展示科技馆设计
互联网科技接地气
10位科技互联网大佬
北京瑞云互联网科技有限公司
广州万易互联网科技有限公司
互联网科技财经
科技信息互联网
智慧科技互联网
互联网科技上市公司
互联网科技的未来发展
互联网养老 桔豆科技
互联网金融科技委员会
互联网科技创新的路径
株洲百竞科技的互联网营销顾问