题目:
给你一个链表数组,每个链表都已经按升序排列。
请你将所有链表合并到一个升序链表中,返回合并后的链表。
解题:
定义一个空链表,然后利用之前的合并两个链表的方法逐个合并
代码:
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代码