当前位置: 首页 > news >正文

LeetCode 合并K个升序链表

题目地址:https://leetcode.cn/problems/merge-k-sorted-lists/description/

算法思路:
先把每个链表的头加入小顶堆,把堆顶节点加入head并出堆,
如果这个节点的下一个元素不为空则加入堆并调整
直到所有元素全部出堆
具体实现如下

func mergeKLists(lists []*ListNode) *ListNode {size := 0heap := []*ListNode{}for i := 0; i < len(lists); i++ {if lists[i] != nil {size++heap = append(heap, lists[i])}}if size == 0 {return nil}for i := size/2 - 1; i >= 0; i-- {heapify(heap, i, size)}head := &ListNode{}tail := headfor size > 0 {minNode := heap[0]tail.Next = minNodetail = tail.Nextif minNode.Next != nil {heap[0] = minNode.Nextheapify(heap, 0, size)} else {size--swap(heap, 0, size)heapify(heap, 0, size)}}return head.Next
}// 调整小顶堆
func heapify(heap []*ListNode, i, size int) {left := i*2 + 1small := leftfor left < size {small = leftif small+1 < size && heap[small].Val > heap[small+1].Val {small = left + 1}if heap[small].Val < heap[i].Val {swap(heap, small, i)i = smallleft = i*2 + 1} else {break}}
}func swap(heap []*ListNode, i, j int) {heap[i], heap[j] = heap[j], heap[i]
}
http://www.dtcms.com/a/486707.html

相关文章:

  • FFmpeg 基本API avformat_alloc_context 函数内部调用流程分析
  • ubuntu系统中ffmpeg+x264简易编译安装指南
  • FLAC to MP3 批量转换 Python
  • 开源鸿蒙6.1和8.1版本被确定为LTS建议版本,最新路标正式发布!-转自开源鸿蒙OpenHarmony社区
  • linux sdl图形编程之helloworld.
  • 开发一个网站系统报价电子商务网站建设试卷及答案
  • 瑞芯微算法环境搭建(2)------编译opencv
  • 计算机视觉(opencv)——人脸网格关键点检测
  • 自己做网站投入编程培训机构需要哪些证件
  • AXI总线的基础知识
  • 【泛微OA】泛微OA平台实现计算具体的天数
  • 「深度学习笔记1」深度学习全面解析:从基本概念到未来趋势
  • puppeteer 生成pdf,含动态目录,目录带页码
  • 深度学习的卷积神经网络中医舌诊断病系统-ResNet50与VGG16方法的比较研究
  • 如何查看网站空间wordpress图片多选
  • Android的Activity与intent知识点
  • 一、前置基础(MVC学习前提)_核心特性_【C# MVC 前置】委托与事件:从 “小区通知” 看懂 MVC 过滤器的底层逻辑
  • 网站建设年度汇报详情页设计理念怎么写
  • Spring Boot项目中Maven引入依赖常见报错问题解决
  • Android 13 启动的时候会显示一下logo,很不友好
  • seo网站快速排名外包关键词seo排名优化如何
  • Linux防火墙:核心机制与安全实践全解析
  • SX1261IMLTRT射频收发器Semtech赋能远距离物联网连接的低功耗射频芯片IC
  • Flutter---坐标网格图标
  • 邢台做网站多少钱洪泽网站建设
  • 整体设计 逻辑系统程序 之30 定稿V1 之1 含 4 套程序架构、三式模型与时空约束体系
  • 基于单片机的智能洗衣机的设计与实现(论文+源码)
  • 【ComfyUI】SDXL Revision 文本提示实现参考图像概念迁移生成
  • Zabbix 模板、监控项、图形指南
  • 个人如何做网站软件湛江免费制作网站