题解 | #合并k个已排序的链表# O(n) O(n)

合并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
	nodeMap := make(map[int][]*ListNode)
	for _, list := range lists {
		for list != nil {
			if _, ok := nodeMap[list.Val]; !ok {
				nodeMap[list.Val] = make([]*ListNode, 0)
			}
			nodeMap[list.Val] = append(nodeMap[list.Val], list)
            list=list.Next
		}

	}
	head := &ListNode{}
	res := head
	var i int
	for i = -1000; i < 1000; i++ {
		for _, node := range nodeMap[i] {
			head.Next = node
			head = head.Next
		}
	}
	return res.Next
}

全部评论

相关推荐

贺兰星辰:不要漏个人信息,除了简历模板不太好以外你这个个人简介是不是太夸大了...
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务