题解 | #合并k个已排序的链表#
合并k个已排序的链表
https://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6
package main import ( . "nc_tools" ) /* * type ListNode struct{ * Val int * Next *ListNode * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param lists ListNode类一维数组 * @return ListNode类 */ func mergeKLists( lists []*ListNode ) *ListNode { // write code here if len(lists) == 0 { return nil } return merge(lists,0,len(lists)-1) } func merge(lists []*ListNode,left,right int) *ListNode{ if left == right { return lists[left] } if left > right { return nil } mid := left + (right - left)/2 return mergeTwoList(merge(lists,left,mid), merge(lists, mid+1, right)) } func mergeTwoList(head1, head2 *ListNode)*ListNode{ dummy := &ListNode{} tail := dummy for head1 != nil && head2 != nil { if head1.Val < head2.Val { tail.Next = head1 head1 = head1.Next } else { tail.Next = head2 head2 = head2.Next } tail = tail.Next } if head1 != nil { tail.Next = head1 } if head2 != nil { tail.Next = head2 } return dummy.Next }