题解 | #合并k个已排序的链表#
合并k个已排序的链表
https://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6
package main
import . "nc_tools"
/*
* type ListNode struct{
* Val int
* Next *ListNode
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param lists ListNode类一维数组
* @return ListNode类
*/
func mergeKLists(lists []*ListNode) *ListNode {
// write code here
// 直接返回
if len(lists) == 0 {
return nil
}
if len(lists) == 1 {
return lists[0]
}
minHead := &ListNode{Val: 99999999}
resHead := minHead
for {
// 记录是否还有处理的节点
tempMin := &ListNode{Val: 99999999}
index := -1
// 遍历一遍,确认最小节点
for i, list := range lists {
if list == nil {
continue
}
// 确认当前的最小节点
if list.Val < tempMin.Val {
tempMin = list
index = i
}
}
// 没有可操作的节点
if index == -1 {
break
}
// 对应的链表向前一步
lists[index] = lists[index].Next
minHead.Next = tempMin
minHead = minHead.Next
}
return resHead.Next
}