1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// @Title: 合并两个排序的链表 (合并两个排序的链表  LCOF)
// @Author: 15816537946@163.com
// @Date: 2022-02-13 16:29:08
// @Runtime: 8 ms
// @Memory: 4.4 MB
func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {
    if l1 == nil {
        return l2
    }
    if l2 == nil {
        return l1
    }

    head := new(ListNode)
    cursor := head

    for l1 != nil && l2 != nil {
        var val int
        if l1.Val < l2.Val {
            val = l1.Val
            l1 = l1.Next
        } else {
            val = l2.Val
            l2 = l2.Next
        }
        head.Next = &ListNode{Val:val}
        head = head.Next
    }

    if l1 != nil {
        head.Next = l1
    }
    if l2 != nil {
        head.Next = l2
    }

    return cursor.Next

}