美文网首页LeetCode题库-Swift解题
23. 合并K个排序链表(Swift版)

23. 合并K个排序链表(Swift版)

作者: Mage | 来源:发表于2019-01-23 14:04 被阅读9次

一、题目

合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。
示例:

输入:
[
  1->4->5,
  1->3->4,
  2->6
]
输出: 1->1->2->3->4->4->5->6

二、解题

三、代码实现

    class Solution {
        func mergeKLists(_ lists: [ListNode?]) -> ListNode? {
            return partition(lists, 0, lists.count - 1)
        }
        func partition(_ lists: [ListNode?], _ left: Int, _ right: Int) -> ListNode? {
            if left == right {
                return lists[left]
            }
            
            if left < right {
                let mid = (left + right) / 2
                let l1 = partition(lists, left, mid)
                let l2 = partition(lists, mid + 1, right)
                return mergeTwoList(l1, l2)
            }
            return nil
        }
        func mergeTwoList(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? {
            if l1 == nil {
                return l2
            }
            if l2 == nil {
                return l1
            }
            
            if l1!.val > l2!.val {
                let tempNode = l2
                tempNode?.next = mergeTwoList(l1, l2?.next)
                return tempNode
            } else {
                let tempNode = l1
                tempNode?.next = mergeTwoList(l1?.next, l2)
                return tempNode
            }
        }
    }

Demo地址:github

相关文章

  • LeetCode 专题 :分治算法

    LeetCode 第 23 题:归并多个有序链表 传送门:23. 合并K个排序链表。 合并 k 个排序链表,返回合...

  • 23. 合并K个排序链表

    23.合并K个排序链表 合并k个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 输入:[ 1-...

  • 【LeetCode】23.合并K个排序链表

    题目描述 23.合并K个排序链表 合并k个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 题目解析 方...

  • leecode刷题(27)-- 合并k个排序链表

    leecode刷题(27)-- 合并k个排序链表 合并k个排序链表 合并 k 个排序链表,返回合并后的排序链表。请...

  • 23. 合并K个排序链表

    23. 合并K个排序链表 题目链接:https://leetcode-cn.com/problems/merge-...

  • 23. 合并K个排序链表(Swift版)

    一、题目 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例: 二、解题 三、代码实现 D...

  • TOP HOT 100 题

    23. 合并多个排序链表:https://leetcode-cn.com/problems/merge-k-sor...

  • ARTS第五周2020620

    Algorithm 合并K个排序链表 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例...

  • 合并K个排序链表【LeetCode:23】

    题目: 合并K个排序链表 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 输入: ...

  • Swift - LeetCode - 合并K个排序链表

    题目 合并K个排序链表 问题: 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 解题思路:...

网友评论

    本文标题:23. 合并K个排序链表(Swift版)

    本文链接:https://www.haomeiwen.com/subject/hvaulqtx.html