func mergeKListsHelp(list1, list2 *ListNode) *ListNode {
head := &ListNode{Next: list1}
prev := head
for list1 != nil && list2 != nil {
if list1.Val < list2.Val {
prev = list1
list1 = list1.Next
} else {
prev.Next = list2
list2 = list2.Next
prev = prev.Next
prev.Next = list1
}
}
if list2 != nil {
prev.Next = list2
}
return head.Next
}
func mergeKLists(lists []*ListNode) *ListNode {
if len(lists) == 0 {
return nil
}
if len(lists) == 1 {
return lists[0]
}
tmp := lists[0]
for i := 1; i < len(lists); i++ {
tmp = mergeKListsHelp(tmp, lists[i])
}
return tmp
}