合并有序链表

题目 - Merge Two Sorted Lists

LeetCode-21

难度:简单

分析

迭代法

我们可以用迭代的方法来实现上述算法。当 l1l2 都不是空链表时,判断 l1l2 哪一个链表的头节点的值更小,将较小值的节点添加到结果里,当一个节点被添加到结果里之后,将对应链表中的节点向后移一位。

代码

func mergeTwoLists(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? {
    let dummy = ListNode(0)
    var node = dummy

    var l1 = l1, l2 = l2
    while l1 != nil && l2 != nil {
        if l1!.val < l2!.val {
            node.next = l1
            l1 = l1!.next
        }else {
            node.next = l2
            l2 = l2!.next
        }
        node = node.next!
    }
    
    node.next = l1 ?? l2
    
    return dummy.next
}