`

LeetCode 23 - Merge k Sorted Lists

 
阅读更多

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.

 

public ListNode mergeKLists(List<ListNode> lists) {
    ListNode dummy = new ListNode(0);
    ListNode tail = dummy;
    Queue<ListNode> queue = new PriorityQueue<>(new Comparator<ListNode>(){
        @Override
        public int compare(ListNode l1, ListNode l2) {
            return l1.val-l2.val;
        }
    });
    for(ListNode node: lists) {
        if(node !=null) queue.offer(node);
    }
    while(!queue.isEmpty()) {
        ListNode node = queue.poll();
        tail = tail.next = node;
        if(node.next != null) {
            queue.offer(node.next);
        }
    }
    return dummy.next;
}

 

Time Complexity: log(k) * n
k is number of list and n is number of total elements.

Space Compexity: k, the heap size

 

补充个C++的代码:

ListNode* mergeKLists(vector<ListNode*>& lists) {
    if(lists.size() == 0) return NULL;
    auto comp = [](ListNode* a, ListNode* b) {return a->val > b->val;};
    priority_queue<ListNode*, vector<ListNode*>, decltype(comp)> pq(comp);
    for(auto it=lists.begin(); it!=lists.end(); ++it) {
        if(*it) pq.push(*it);
    }
    ListNode dummy(0), *node = &dummy;
    while(!pq.empty()) {
        ListNode *n = pq.top();
        pq.pop();
        node->next = n;
        node = n;
        if(n->next) {
            pq.push(n->next);
        }
    }
    return dummy.next;
}

 

分享到:
评论

相关推荐

    c语言-leetcode 0023-merge-k-sorted-lists.zip

    c c语言_leetcode 0023_merge_k_sorted_lists.zip

    c语言-leetcode 0021-merge-two-sorted-lists.zip

    c c语言_leetcode 0021_merge_two_sorted_lists.zip

    js-leetcode题解之23-merge-k-sorted-lists.js

    最终,题解文件“js-leetcode题解之23-merge-k-sorted-lists.js”将为leetcode用户和JavaScript开发者提供一个清晰的解题思路和一个可靠的代码实现,帮助他们更好地理解和掌握如何合并多个排序链表,以及如何在实际...

    C语言-leetcode题解之21-merge-two-sorted-lists.c

    “C语言-leetcode题解之21-merge-two-sorted-lists.c”不仅为初学者提供了一道链表操作的经典题目,更是引导其深入理解链表结构和指针操作的一个有效途径。通过不断的练习和思考,可以快速提升编程能力和解题技巧,...

    js-leetcode题解之21-merge-two-sorted-lists.js

    今日我们要分析的题目是LeetCode上的一道经典题目——合并两个有序链表(Merge Two Sorted Lists)。该题目要求编写一个函数,将两个已排序的链表合并为一个新的有序链表,并且返回新的链表头节点。这里提到的链表是...

    LeetCode Merge 2 Sorted Lists解决方案

    LeetCode Merge 2 Sorted Lists解决方案详解 Merge 2 Sorted Lists是LeetCode上的一个经典算法题目,旨在考察程序员对链表的操作和排序算法的掌握程度。下面对该题目的解决方案进行详细的分析和解释。 问题描述 ...

    leetcode中文版-LeetCode:力码

    23.Merge k Sorted Lists(solve1) LeetCode 23.Merge k Sorted Lists(solve2) LeetCode 86.Partition List LeetCode 92.Reverse Linked List II LeetCode 138.Copy List with Random Pointer LeetCode 142.Linked ...

    程序员面试宝典LeetCode刷题手册

    第四章 Leetcode 题解 1. Two Sum 2. Add Two Numbers 3. Longest Substring Without Repeating Characters ...23. Merge k Sorted Lists 24. Swap Nodes in Pairs 25. Reverse Nodes in k-Group 26. Remove Dupli

    leetcode分类-leetcode:leetcode问题的代码

    leetcode 分类leetcode 问题分类 leetcode代码仓库,我的解题思路写在我的博客里: leetcode 代码库,我博客上的解题思路: mkdir 列表: 大批 #1:Two Sum #4:Median ...Sorted ...#23:Merge k Sorted Lists

    leetcode答案-LeetCode-Trip:LeetCode刷题代码,大佬勿入

    leetcode 答案 LeetCode-Trip LeetCode刷题代码,大佬勿入。 为一年后的研究生找工作准备 目标是BAT的算法岗哈哈哈哈哈 争取做到每日一更 嗯…… 19.10.22:鸽了这么久,我又回来了……主要在实验室天天没啥事,过于...

    leetcode中国-cu-cafes:这是一个Java存储库。而CU是楼下的咖啡馆

    leetcode中国 cu-cafes This ...具体内容为(https://leetcode.com/problems/merge-two-sorted-lists/)。其中包含规范代码以及自己写的代码 [模块]: "Merge Two Sorted Lists" 备注:代码使用 Alibab

    _leetcode-python.pdf

    - Merge k Sorted Lists: 合并k个排序链表。 - Swap Nodes in Pairs / Reverse Nodes in k-Group: 这两个问题涉及到在链表中按特定规则交换节点或反转节点组。 - Remove Duplicates from Sorted Array / Remove ...

    leetcode跳跃-leetcode:leetcode解题之路

    leetcode 跳跃 leetcode 按题型标签,记录...合并K个排序链表](./Heap/merge-k-sorted-lists.md) String 字符串 [0006 Z字形变换](./String/zigzag-conversion.md) [0030 串联所有单词的子串](./String/substring

    leetcode答案-LeetCode:Swift中的LeetCode

    leetcode 答案LeetCode LeetCode in Swift 这个Repo 用来存下我在LeetCode 解题的原始档,包含解题中遇到的错误,也包含解出AC 的答案, 以下的清单将连结到我的Github Pages 中,皆有题目中文翻译与解题的过程。...

    leetcode2-Leetcode:Leetcode_answer

    leetcode 2 Leetcode答案集 关于项目: 本项目包含本人LeetCode解题的答案,全部将由JavaScript语言进行解答。并会在每个题目的文件夹中添加相关的思路解析。 详情 # Title Solution Time Space Difficulty 1 Two ...

    leetcode跳跃-leetcode:leetcode一天一次

    leetcode 跳跃 leetcode 动态规划,背包问题 01背包问题:416. Partition Equal Subset Sum 最长回文:5. Longest Palindromic Substring - 字数组余数:523. Continuous Subarray Sum - 无重复字符的最长子串:3. ...

    leetcode-链表笔记

    Merge Two Sorted Lists**:合并两个已排序的链表,保持排序顺序。 - **142. Linked List Cycle II**:找到链表环的长度,并给出进入环的第一个节点。 4. **解决链表问题的策略** - **迭代法**:使用循环遍历...

    多线程leetcode-leetcode-java:leetcode上的题解,基于java语言

    多线程 leetcode 前言 每天刷点leetcode,基于java语言实现。 leetcode上难度分三档:easy,medium,hard. 如下: easy medium ...Merge k Sorted Lists Reverse Nodes in k-Group Trapping Rain Water

    gasstationleetcode-leetcode-rust:莱特代码休息

    加油站 leetcode 力码锈 问题 # 标题 命令 1 cargo run --bin 1-two-sum 2 cargo run --bin 2-add-two-numbers 3 cargo run ...21-merge-two-sorted-lists 27 cargo run --bin 27-remove-element 28

Global site tag (gtag.js) - Google Analytics