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

乌克兰设计网站建设自动发布 wordpress

乌克兰设计网站建设,自动发布 wordpress,鲜花网站建设项目概述,自己学网站建设23. 合并 K 个升序链表 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 正文 这道题有多种解决方案 堆 比较容易,又比较直观的就是堆排序,将每个节点加入最小根堆中&…

23. 合并 K 个升序链表

给你一个链表数组,每个链表都已经按升序排列。

请你将所有链表合并到一个升序链表中,返回合并后的链表。


正文

这道题有多种解决方案

比较容易,又比较直观的就是堆排序,将每个节点加入最小根堆中,依次弹出加入最后的链表,就可得出答案,事实上,并不需要每次都将所有链表加入,只需要最开始将每个链表的头节点加入,然后在弹出链表时,直接将弹出的节点的下一个节点再加入堆即可,这样能够有效节省空间。

代码如下:

func mergeKLists(lists []*ListNode) *ListNode {lh := &ListHeap{}heap.Init(lh)for _, node := range lists {if node != nil {heap.Push(lh, node)}}dummy := &ListNode{}tmp := dummyfor lh.Len() > 0 {Node := heap.Pop(lh).(*ListNode)tmp.Next = Nodetmp = tmp.Nextif Node.Next != nil {heap.Push(lh, Node.Next)}}return dummy.Next
}type ListHeap []*ListNodefunc (l *ListHeap) Len() int {return len(*l)
}func (l *ListHeap) Less(i, j int) bool {return (*l)[i].Val < (*l)[j].Val
}func (l *ListHeap) Swap(i, j int) {(*l)[i], (*l)[j] = (*l)[j], (*l)[i]
}func (l *ListHeap) Push(x any) {*l = append(*l, x.(*ListNode))
}func (l *ListHeap) Pop() any {res := (*l)[len(*l)-1]*l = (*l)[:len(*l)-1]return res
}

堆排序不用ide也太难写了~

分治

跟归并排序的思路类似,将链表切片分成两部分,分别合并成一个链表,再将这两个链表进行合并。

可以理解为:

	链表1  链表2    链表3    链表4|		  |		|		  ||		  |		|		  ||		  |		|		  ||		  |		|		  |+————+————+     +————+————+|			 	 |链表			链表+————————+——————+||最终链表

代码如下:

func mergeKLists(lists []*ListNode) *ListNode {return Merge(lists, 0, len(lists) - 1)
}func Merge(lists []*ListNode, l int, r int) *ListNode {if l == r {return lists[l]} else if l > r {return nil}mid := (l + r) / 2return MergeTwoLists(Merge(lists, l, mid), Merge(lists, mid + 1, r))
}func MergeTwoLists(list1 *ListNode, list2 *ListNode) *ListNode {dummy := &ListNode{}tmp := dummyfor list1 != nil && list2 != nil {if list1.Val > list2.Val {tmp.Next = list2tmp = tmp.Nextlist2 = list2.Next} else {tmp.Next = list1tmp = tmp.Nextlist1 = list1.Next}}if list1 != nil {tmp.Next = list1}if list2 != nil {tmp.Next = list2}return dummy.Next
}

http://www.yayakq.cn/news/745166/

相关文章:

  • 一个专门做字画的网站wordpress 插件怎么用
  • 网站制作毕业设计论文首页模版
  • 网站上线优化排名案例
  • 汉庭酒店网站建设方案保山便宜的网站建设
  • 手机微网站第二年续费吗手机刷网站排名软件
  • 陕西省建设厅网站证件查询网站收录一键提交
  • 网站群建设的目的在北京做网站seo多少钱
  • 肥西县市建设局网站阿里云企业邮箱官网
  • 黔西做网站网络营销推广方法研究
  • 字体图标网站怎么做提升自己的网站
  • 北京企业网站案例系统优化的影响因素
  • 网站开发收费标准临沂网站服务器价格
  • 网站更改空间网站建设的后台登录
  • 苏州网站建设的公司国外优秀企业网站模板
  • 企业产品展示网站源码汕头网站优化系统
  • 后台网站建设教程风中有朵雨做的云电影网站
  • 承德百度网站建设编辑html
  • 坪地网站建设包括哪些免费网站安全软件大全
  • 杭州做网站的公司有哪些大石桥城乡规划建设局网站
  • vs做网站加背景做标书的网站
  • 网站建设的个人总结成都做小程序哪个服务最好
  • 铜川公司做网站网站怎样做平面设计图
  • 制作网站公司名称做网站一屏的尺寸是
  • 企业建设好一个网站后_如何进行网站推广?程序员培训机构课程
  • 建设一个网站需要学哪些涿州做网站公司
  • 创办一个网站的费用视频推广渠道
  • 百度做网站怎么联系wordpress aws上集成环境
  • 免费做优化的网站宾爵手表价格官方网站
  • 2018企业网站优化应该怎么做网站怎么集成支付宝
  • 页游平台网站站长网