前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode,Go实现合并两个有序链表

LeetCode,Go实现合并两个有序链表

作者头像
微客鸟窝
发布2021-08-18 15:28:00
3420
发布2021-08-18 15:28:00
举报
文章被收录于专栏:Go语言指北

力扣题目:

LeetCode题目源地址:https://leetcode-cn.com/problems/merge-two-sorted-lists/

解题思路

首先我们定义一个头结点,遍历链表,将头结点的 Next 字段指向较小的那个链表的节点,然后头结点后移一位,再次遍历链表,将头结点的 Next 字段指向较小的那个链表的节点。。。如此循环,直至两个链表中有 nil 出现,说明有链表遍历结束,剩下的链表如果不为空则可以直接拼接在新链表后面,因为剩下的链表元素肯定大于新链表。

  1. 将 head 节点指向 l1 或 l2 中比较小的一个,如果相等则随便指向其中一个。
  1. head 节点后移,将 head 节点指向 l1 或 l2 中比较小的一个
  1. 重复上述步骤,直至 l1 或 l2 链表中有遍历结束的为止。

程序实现

代码语言:javascript
复制
func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {
  head := &ListNode{}
  result := head
 for l1 != nil && l2 != nil {
  if l1.Val < l2.Val {
   head.Next = l1
   l1 = l1.Next
  } else {
   head.Next = l2
   l2 = l2.Next
  }
  head = head.Next
 }
 if l1 != nil {
  head.Next = l1
 }
 if l2 != nil {
  head.Next = l2
 }
 return result.Next
}

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微客鸟窝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 解题思路
  • 程序实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档