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]
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
深入理解C++11
Michael Wong、IBM XL编译器中国开发团队 / 机械工业出版社 / 2013-6 / 69.00元
《深入理解C++11:C++11新特性解析与应用》内容简介:国内首本全面深入解读C++11新标准的专著,由C++标准委员会代表和IBM XL编译器中国开发团队共同撰写。不仅详细阐述了C++11标准的设计原则,而且系统地讲解了C++11新标准中的所有新语言特性、新标准库特性、对原有特性的改进,以及如何应用所有这些新特性。 《深入理解C++11:C++11新特性解析与应用》一共8章:第1章从设计......一起来看看 《深入理解C++11》 这本书的介绍吧!