23. 合并K个升序链表

40 阅读1分钟

23. 合并K个升序链表

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
}