leetCode练习(23)

来源:互联网 发布:sketch3 mac 破解汉化 编辑:程序博客网 时间:2024/05/17 04:03
题目:Merge k Sorted Lists
难度:hard
问题描述:
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
将一个已经排序好的链表数组整合成一个新的排序好了的数组。
解题思路:
思路1:每次读出每个链表的头结点值lists[n].val,找到值最小的节点lists[a],加入res,并将该节点的头结点后移一位,list[a]=list[a].next;
             重复以上操作,知道所有节点都加入了res。
             实现以上代码后,在leetCode运行显示超时,复杂度太高,每加入一个节点都要循环查找n个链表头结点。查看提示tags,看到关键词heap。想到了堆排序,遂有了思路2
思路2:一次读出每个节点,并加入搜索二叉树,然后利用中序遍历,获得从小到大的值并加入res即可。

具体代码如下:

0 0
原创粉丝点击