合并两个有序链表
Posted 木子沉雨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了合并两个有序链表相关的知识,希望对你有一定的参考价值。
题目信息
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
解题思路
创建一个头部指针pHead,比较两个传入链表的头指针的数据大小,将pHead的next指针指向较小数据链表的数据,并将该该链表的next后移,直到两个列表都不为空。
代码
public class ListNode { public var val: Int public var next: ListNode? public init(_ val: Int) { self.val = val self.next = nil } } func mergeTwoLists(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? { var list1 = l1 var list2 = l2 // 创建头部指针 let pHead = ListNode(-1) var preN = pHead // 当两个链表都不为空时执行 while list1 != nil && list2 != nil { // 当前指针指向较小数据的链表,并将该链表的指针后移 if list1!.val < list2!.val { preN.next = list1 list1 = list1?.next } else { preN.next = list2 list2 = list2?.next } preN = preN.next! } // 将不为空的链表拼接到新创建的链表中 preN.next = (list1 == nil ? list2 : list1) return pHead.next }
题目链接
以上是关于合并两个有序链表的主要内容,如果未能解决你的问题,请参考以下文章