23. Merge k Sorted Lists

来源:互联网 发布:科比数据 编辑:程序博客网 时间:2024/06/05 15:04

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.

/** * Definition for singly-linked list. * type ListNode struct { *     Val int *     Next *ListNode * } */func mergeKLists(lists []*ListNode) *ListNode {    var lastOne *ListNode    for _,v:=range lists{        if lastOne !=nil {            lastOne = merge(lastOne,v)        }else{            lastOne = v        }    }    return lastOne;}func merge(l1, l2 *ListNode) *ListNode {        resultC := new(ListNode)        result := resultC        for l1 != nil || l2 != nil {                if l1 == nil {                        resultC.Next = l2                        l2 = l2.Next                } else if l2 == nil {                        resultC.Next =l1                        l1 = l1.Next                } else if l1.Val <= l2.Val {                        resultC.Next = l1                        l1 = l1.Next                 } else {                        resultC.Next = l2                        l2 = l2.Next                }                resultC = resultC.Next        }        return result.Next}
原创粉丝点击