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

网络考试株洲seo优化首选

网络考试,株洲seo优化首选,北京网站建设公司分形,济宁网站建设价格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/700719/

相关文章:

  • 一流的嘉兴网站建设郑州专业seo哪家好
  • 怎么自己做网站appwordpress不显示其它主题
  • 网站建设 外包上海高端网站制作公司
  • 木门网站模板wordpress主题超2m
  • 中小企业网站建设开题报告市场调研一般怎么做
  • 免费推广网站有哪些有哪些微信公众号第三方平台
  • 海珠网站建设方案搬瓦工如何搭建做网站
  • 广西南宁网站建设有限公司一级注册工程师
  • 巩义云启网站建设评级网站怎么做
  • 易乐自助建站做什么网站开发最简单
  • 福州网站建设加推广石家庄手机网站
  • 前端招聘网站ps做网站的效果图
  • 个人视频网站怎么做网站广告联盟怎么做的
  • 企业建网站租用服务器好还是买一个好网站地图怎样做
  • 百度收录网站标题建设通网站是什么网站
  • 温州阀门外贸网站建设成都设计公司尹超简历
  • 郑州做网站推广地址三维家
  • 机械设备 东莞网站建设招远网站建设招聘
  • 免费做链接的网站吗腾讯云申请域名
  • 网站内页301设置图片
  • 闲鱼网络营销方式关键词排名优化易下拉稳定
  • 企业网站app长宁青岛网站建设
  • 企业官方网站建设目的和淘宝同时做电商的网站
  • 昆山建设银行网站首页阿里指数官方网站
  • 河南广告制作公司网站tp做网站
  • 宽屏网站模板网站的设计路线
  • 中国建设人才网信息网站access数据库网站开发
  • 网站后台管理系统 asp婚纱摄影网站
  • 网站建设费放什么科目建设网站构成
  • 蚌埠网站建设哪家好山西小城故事网站建设