头和尾合并
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];

}