合并K个升序链表(Go)
给你一个链表数组,每个链表都已经按升序排列。
请你将所有链表合并到一个升序链表中,返回合并后的链表。
func mergeKLists(lists []*ListNode) *ListNode { if len(lists)==0{ return nil } if len(lists) == 1{ return lists[0] } if len(lists) == 2{ return mergeTwoLists(lists[0],lists[1]) } mid := len(lists)/2 lists1 := lists[:mid] lists2 := lists[mid:] return mergeTwoLists(mergeKLists(lists1),mergeKLists(lists2)) } func mergeTwoLists(l1,l2 *ListNode) *ListNode{ if l1==nil{return l2} if l2==nil{return l1} pre := &ListNode{Val:0,Next:nil} cur := pre if l1.Val>l2.Val{ cur.Next = l2 cur.Next.Next = mergeTwoLists(l2.Next,l1) }else{ cur.Next = l1 cur.Next.Next = mergeTwoLists(l1.Next,l2) } return pre.Next }