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

大丰区城乡和住房建设局网站上海优化公司选哪个

大丰区城乡和住房建设局网站,上海优化公司选哪个,内蒙做网站,现在什么语言做网站最好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.dtcms.com/wzjs/11704.html

相关文章:

  • 做旅游网站的需求分析报告太原seo外包公司
  • 展示型网站一样做seo优化吗网络营销软件排行
  • 网站开发总结与未来展望优秀的软文广告案例
  • 选择响应式网站建设发外链平台
  • 做网站的属于什么行业上海网站快速排名提升
  • 济宁b2b网站开发公司中和seo公司
  • 浙江省建设工程造价协会网站百度广告投放电话
  • 传统网站建设架构搜狗seo软件
  • 学做网站培训班要多少钱电商运营培训大概多少学费
  • 甘肃建设项目审批权限网站哈尔滨网络优化推广公司
  • 网站做推广有用关键词查询工具哪个好
  • 自己如何做网站教程seo网站结构优化
  • wordpress 下载页面windows优化大师提供的
  • 2345官网爱站网seo工具包
  • 360未经证实的网站如何做英语培训机构前十名
  • 快递建站收费标准生哥seo博客
  • 建站网站软件8网站站长工具
  • 27寸显示器网站建设简述seo和sem的区别与联系
  • 高水平的郑州网站建设网络营销策划的内容
  • 学习网站建设培训网站优化北京seo
  • 网站如何做聚合页面电子商务网站
  • 三一重工的网站是哪家做的营销推广型网站
  • 网站建设计划表企业推广宣传文案
  • 杭州网站建设公司行业关键词词库
  • 中国设计之窗官方网站培训平台有哪些
  • 网站建设服务流程今天实时热搜榜排名
  • 网站建设都 包括哪些人工智能的关键词
  • 黑龙省建设厅网站首页google搜索引擎入口2022
  • 优秀网站建设方案seo网站优化网站编辑招聘
  • 电力公司 网站开发报价单抖音推广引流