LeetCode算法题-23. 合并K个排序链表(Swift)
2019-10-14 本文已影响0人
entre_los_dos
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-k-sorted-lists
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。
示例:
输入:
[
1->4->5,
1->3->4,
2->6
]
输出: 1->1->2->3->4->4->5->6
方法-遍历node,将所有的val加到数组,排序后,添加到新的node中,即为结果
func mergeKLists(_ lists: [ListNode?]) -> ListNode? {
var valArr = [Int]()
let node: ListNode = ListNode(0)
var lastNode = node
for var listNode in lists {
while listNode != nil {
valArr.append(listNode!.val)
listNode = listNode?.next
}
}
valArr = valArr.sorted()
for num in valArr {
let currentNode: ListNode = ListNode(num)
lastNode.next = currentNode
lastNode = lastNode.next!
}
return node.next
}
image.png