LeetCode 23.合并K个排序链表
大家好,我是灵魂画师--茄子。技术水平一般,喜欢画画。
开始今天的正题。
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。
示例 1:
输入:
[
1->4->5,
1->3->4,
2->6
]
输出: 1->1->2->3->4->4->5->6
解法:
1.双指针解法
思路:
- 遍历数组,合并两个成新的一个链表再继续合并下一个链表
let mergeKLists = function(lists) {
let mergeTwoLists = (l1,l2) => {
let preHead = new ListNode(-1)
let preNode = preHead
while(l1 && l2){
if(l1.val <= l2.val){
preNode.next = l1
l1 = l1.next
}else{
preNode.next = l2
l2 = l2.next
}
preNode = preNode.next
}
preNode.next = l1 ? l1 : l2
return preHead.next
}
let n = lists.length
if(n == 0) return null
let res = lists[0]
for(let i = 1;i < n;i++){
if(lists[i]){
res = mergeTwoLists(res,lists[i])
}
}
return res
};
结合我的分析你是不是对这道题有了更清晰的认识了呢?
以上就是我的思路以及解法了,希望大家喜欢我,我会继续努力的ヾ(◍°∇°◍)ノ゙。(点个赞把我带走吧~~)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。