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

设计开发建设网站找建筑工程平台

设计开发建设网站,找建筑工程平台,南通网站关键词推广,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/543877/

相关文章:

  • 遂宁网站开发兴安网站建设
  • 企业网站推广定义开发商城网站多少钱
  • 洛阳建设厅网站企业网站策划方案网站建设方案
  • 什么是网站托管泉州市新濠网络科技有限公司
  • 无锡网站建设外包优势wordpress cdn sae jquery
  • 龙口城乡建设局官方网站网站建设服务费下什么科目
  • 淄川区建设局网站北京海淀区的科技有限公司
  • 可以自己设计一个公司的网站小程序代理加盟政策
  • 东莞家具行业营销型网站建设多少钱网站建设培训总结
  • 企业用什么做网站计算机专业都学什么
  • 网站谷歌地图提交支付宝也做网站吗
  • 如何做招聘网站运营网站运营专员做什么
  • 花都区pc端网站建设微网站 杭州
  • 自己怎么做搬家网站成都网站建设是什么
  • 株洲网站排名开发软件app公司
  • phpstudy做网站运营的坏处wordpress手机主题开发
  • 网站安全狗 拦截301不上此网站枉做男人
  • 旅游网站设计购物网站的搜索框用代码怎么做
  • 网站建设 平易济宁网站建设 田振
  • 宝安网站(建设深圳信科)自由室内设计师接单网站
  • 企业咨询公司是不是骗子苏州seo免费咨询
  • 沈阳哪里有教做网站的闵行装饰
  • 手机网站用什么系统广东互联网产品推广技术
  • 网站建设东莞网站建立失败的原因是
  • 网站备案ip查询系统网站后台管理js
  • 怎样设计网站静态页面企业网站建设价格表
  • 建网站云空间用公司注册公司需要什么资料
  • 店铺网站建设策划书没有做icp备案的网站
  • 外贸自己做网站好不好1元购类似网站架设药多少钱
  • 做中考试卷的网站网站app充值记账凭证怎么做