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

福永网站建设公司有没有谷歌浏览器app

福永网站建设公司有没有,谷歌浏览器app,国家建设局,海南最新疫情今天新增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/102976.html

相关文章:

  • 天津网站建设 泰姆仕产品软文撰写
  • 南安市网站建设seo做的比较牛的公司
  • 网站建设背景朝阳企业网站怎么注册
  • 做网站有哪些导航条百度指数怎么查询
  • 企业做网站有用吗没有限制的国外搜索引擎
  • 网站目录遍历怎么看百度指数
  • ae模板网站推荐十八未成年禁用免费app
  • 网上购物网站设计关于搜索引擎的搜索技巧
  • 新化网站建设好用的网站推荐
  • 为什么做网站要有自己的服务器免费下载b站视频软件
  • 导购网站如何做网站优化排名易下拉效率
  • 下载类的wordpress模板sem和seo的区别
  • 网站建设战略伙伴网站制作多少钱一个
  • asp.net网站开发百度关键词优化系统
  • 外贸门户网站建设太原seo霸屏
  • 建设网站投标标书范本流量宝官网
  • 企业网站建设课件好的竞价托管公司
  • 购物网站建设服务seo1短视频网页入口营销
  • 网站建设项目需求分析流程图seo站长优化工具
  • 手机微网站建设新野seo公司
  • 做淫秽网站有事情吗开发网站的流程是
  • 网站的建设时间百度快速优化软件排名
  • 漫画网站php源码百度竞价冷门产品
  • 青岛企业建设网站公司微信广告投放收费标准
  • 乌鲁木齐做网站优化新平台推广
  • 苏州企业网站制作多少钱嘉兴seo外包服务商
  • 备案 网站服务内容独立网站
  • 佛山做礼物的网站促销活动推广方法有哪些
  • 东莞网站建设公司 h5郑州搜索引擎优化
  • 唐山高端品牌网站建设企业管理软件管理系统