题解 | #合并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 上海

相关推荐

码农索隆:有点耳熟,你们是我教过最差的一届
点赞 评论 收藏
分享
uu们,拒offer时hr很生气怎么办我哭死
爱睡觉的冰箱哥:人家回收你的offer,或者oc后没给你发offer的时候可不会愧疚你,所以你拒了也没必要愧疚他。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
07-03 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务