LeetCode 23 合并K个升序链表

题目:

给你一个链表数组,每个链表都已经按升序排列。

请你将所有链表合并到一个升序链表中,返回合并后的链表。

解题:

定义一个空链表,然后利用之前的合并两个链表的方法逐个合并

代码:


func mergeKLists(lists []*ListNode) *ListNode {
    list := &ListNode{0, nil}
    for i := range lists {
        list.Next = mergeTwoLists(list.Next, lists[i])
    }
    return list.Next
}


func mergeTwoLists(list1, list2 *ListNode) *ListNode {
    list := &ListNode{0, nil}
    node := list
    for list1 != nil && list2 != nil {
        if list1.Val < list2.Val {
            node.Next = list1
            list1 = list1.Next
        } else {
            node.Next = list2
            list2 = list2.Next
        }
        node = node.Next
    }
    if list1 == nil {
        node.Next = list2
    } else {
        node.Next = list1
    }
    return list.Next
}

官方没有golang代码

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注