头和尾合并
lists[0], lists[n-1]; 把lists[n-1]合并到lists[0]上
lists[1], lists[n-2]
...
直到数组长度为1
package main import . "nc_tools" /* * type ListNode struct{ * Val int * Next *ListNode * } */ /** * * @param lists ListNode类一维数组 * @return ListNode类 */ func merge( a,b *ListNode ) *ListNode { var L ListNode var p *ListNode = &L for a != nil && b != nil { if a.Val <= b.Val { p.Next = a p = a; a = a.Next p.Next = nil }else { p.Next = b; p = b; b = b.Next; p.Next = nil; } } if a != nil { p.Next = a; }else { p.Next = b; } return L.Next; } func mergeKLists( lists []*ListNode ) *ListNode { // write code here listsLen := len(lists) j := listsLen - 1 if listsLen <= 0 { return nil; } if listsLen <= 1 { return lists[0]; } for j >= 1 { for i:= 0; i < j; i++ { lists[i] = merge(lists[i], lists[j]) j-- } } return lists[0]; }