题目链接:合并k个已排序的链表_牛客题霸_牛客网
描述
合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。
示例
输入:
[{1,2,3},{4,5,6,7}]
返回值:
{1,2,3,4,5,6,7}
Go代码实现
func merge2(pHead1 *ListNode, pHead2 *ListNode) *ListNode {
result := &ListNode{}
cur := result
for pHead1 != nil && pHead2 != nil {
if pHead1.Val >= pHead2.Val {
cur.Next = pHead2
pHead2 = pHead2.Next
} else {
cur.Next = pHead1
pHead1 = pHead1.Next
}
cur = cur.Next
}
if pHead1 == nil {
cur.Next = pHead2
} else if pHead2 == nil {
cur.Next = pHead1
}
return result.Next
}
func mergeKLists(lists []*ListNode) *ListNode {
// write code here
if len(lists) < 1 {
return nil
}
for len(lists) > 1 {
for i := 0; i < len(lists)-1; i++ {
lists[i] = merge2(lists[i], lists[len(lists)-1])
lists[len(lists)-1] = nil
lists = lists[:len(lists)-1]
}
}
return lists[0]
}