题解 | #合并k个已排序的链表#

合并k个已排序的链表

https://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6

package main


/*
 * type ListNode struct{
 *   Val int
 *   Next *ListNode
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param lists ListNode类一维数组
 * @return ListNode类
 */


func mergeKLists(lists []*ListNode) *ListNode {
    return devideMerge(lists,0,len(lists)-1)
}

func devideMerge (lists []*ListNode,left, right int) *ListNode {

    if left > right {
        return nil 
    }
    if left == right {
        return lists[left]
    }
    mid := (left + right)/2
    return Merge(devideMerge(lists,left,mid),devideMerge(lists,mid+1,right))

}
func Merge(pHead1 *ListNode, pHead2 *ListNode) *ListNode {

	if pHead1 == nil {
		return pHead2
	}
	if pHead2 == nil {
		return pHead1
	}
	vh := &ListNode{}
	cur := vh
	for i := 0; ; i++ {
		if pHead1 == nil || pHead2 == nil {
			break
		}
		if pHead1.Val < pHead2.Val {
			cur.Next = pHead1
			pHead1 = pHead1.Next
		} else {
			cur.Next = pHead2
			pHead2 = pHead2.Next
		}
		cur = cur.Next
	}

	if pHead1 != nil {
		cur.Next = pHead1
	}

	if pHead2 != nil {
		cur.Next = pHead2
	}
	return vh.Next
}

全部评论
先拆后合,把K个合并,拆分成2个合并,然后再合并在一起
点赞 回复 分享
发布于 2023-10-24 08:44 上海

相关推荐

不愿透露姓名的神秘牛友
11-29 12:19
点赞 评论 收藏
分享
把球:这个听过,你加了就会发现是字节的hr
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务