/** * Definition for singly-linked list. * public class ListNode { * public var val: Int * public var next: ListNode? * public init() { self.val = 0; self.next = nil; } * public init(_ val: Int) { self.val = val; self.next = nil; } * public init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next; } * } */ class Solution { func mergeKLists(_ lists: [ListNode?]) -> ListNode? { var lists = lists.filter { $0 != nil } let root = ListNode() var node = root while !lists.isEmpty { // find the next list var minIdx = 0 for i in 1..