Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
Example:
Input:[ 1->4->5, 1->3->4, 2->6 ]
Output:1->1->2->3->4->4->5->6
func mergeKLists(_ lists: [ListNode?]) -> ListNode? {
var i = 0, j = 0, fl = lists.compactMap({$0}), n = fl.count, p: ListNode?
if n < 1 { return nil }
var arr = Array(repeating: 0, count: 256*256)
while i < n {
p = fl[i]; i += 1
while let p1 = p {
arr[j] = p1.val
p = p1.next; j += 1
if p == nil, i < n {
p1.next = fl[i]
}
}
}
arr = Array(arr[..<j]).sorted()
i = 0; p = fl[0]
while let q = p, i < j {
q.val = arr[i]
p = q.next; i += 1
}
return fl[0]
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
精通Java并发编程(第2版)
[西] 哈维尔·费尔南德斯·冈萨雷斯 / 唐富年 / 人民邮电出版社 / 2018-10 / 89.00元
Java 提供了一套非常强大的并发API,可以轻松实现任何类型的并发应用程序。本书讲述Java 并发API 最重要的元素,包括执行器框架、Phaser 类、Fork/Join 框架、流API、并发数据结构、同步机制,并展示如何在实际开发中使用它们。此外,本书还介绍了设计并发应用程序的方法论、设计模式、实现良好并发应用程序的提示和技巧、测试并发应用程序的工具和方法,以及如何使用面向Java 虚拟机的......一起来看看 《精通Java并发编程(第2版)》 这本书的介绍吧!