/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ funcmergeKLists(lists []*ListNode) *ListNode { iflen(lists)==0||(len(lists)==1&&lists[0] == nil){ returnnil } var ans *ListNode = nil for _, list := range lists{ ans = mergeTwoLists(ans,list) } return ans }
funcmergeTwoLists(list1,list2 *ListNode) *ListNode{ if list1==nil||list2==nil{ if list1==nil{ return list2 }else{ return list1 } } head := new(ListNode) tail,p1,p2 := head,list1,list2 for p1!=nil&&p2!=nil{ if p1.Val<=p2.Val{ tail.Next = p1 p1 = p1.Next }else{ tail.Next = p2 p2 = p2.Next } tail = tail.Next } if p1!=nil{ tail.Next = p1 }else{ tail.Next = p2 } return head.Next }