描述

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

思路

借鉴Merge Two Sorted Lists的解决思路,对两个数组先进行排序,然后两两组合,排成一个序列。

将此视为一种迭代的分而治之的解决方案。

mergeTwoLists方法是一种递归的合并两个序列的方法

注意:

尽量不用erase方法,太耗时。

一些优化以避免vector.erase()

比如下述:

 while(lists.size() > 1){lists.push_back(mergeTwoLists(lists[0], lists[1]));lists.erase(lists.begin());lists.erase(lists.begin());}return lists.front();

改为使用指针方法遍历vector,最后取vector.back()

最终解决方案:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode* mergeKLists(vector<ListNode*>& lists) {if(lists.empty()){return nullptr;}if(lists.size() == 1) return lists[0];int i = 0;while(i < lists.size() - 1){lists.push_back(mergeTwoLists(lists[i], lists[i+1]));i += 2;}return lists.back();}ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {if(l1 == nullptr){return l2;}if(l2 == nullptr){return l1;}if(l1->val <= l2->val){l1->next = mergeTwoLists(l1->next, l2);return l1;}else{l2->next = mergeTwoLists(l1, l2->next);return l2;}}
};

转载于:https://www.cnblogs.com/ygh1229/p/9718627.html

【LeetCode】【数组归并】Merge k Sorted Lists相关推荐

  1. Python 解LeetCode:23. Merge k Sorted Lists

    题目描述:把k个排序的链表组成的列表合并成一个排序的链表 思路: 使用堆排序,遍历列表,把每个列表中链表的头指针的值和头指针本身作为一个元素放在堆中: 第一步中遍历完列表后,此时堆中最多会有n个元素, ...

  2. LeetCode 之 JavaScript 解答第23题 —— 合并K个有序链表(Merge K Sorted Lists)

    Time:2019/4/10 Title: Merge K Sorted Lists Difficulty: Difficulty Author: 小鹿 题目:Merge K Sorted Lists ...

  3. 71. Merge k Sorted Lists

    Merge k Sorted Lists Merge k sorted linked lists and return it as one sorted list. Analyze and descr ...

  4. LeetCode算法入门- Merge Two Sorted Lists -day15

    LeetCode算法入门- Merge Two Sorted Lists -day15 题目描述: Merge two sorted linked lists and return it as a n ...

  5. 21.Merge Two Sorted Lists 、23. Merge k Sorted Lists

    21.Merge Two Sorted Lists 初始化一个指针作为开头,然后返回这个指针的next class Solution { public:ListNode* mergeTwoLists( ...

  6. Merge k Sorted Lists leetcode java

    题目: Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexit ...

  7. [leetcode] Merge k Sorted Lists

    2019独角兽企业重金招聘Python工程师标准>>> Merge k sorted linked lists and return it as one sorted list. A ...

  8. [LeetCode] Merge k Sorted Lists 合并k个有序链表

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

  9. 合并k个有序链表 python_[LeetCode] 23. Merge k Sorted Lists 合并k个有序链表

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

最新文章

  1. MMD_5b_ComputationalAdvertising
  2. linux下查看文件编码及修改编码
  3. 【指标统计】本区或跨区取WEB统计指标配置方法
  4. jsp oracle 环境配置文件,jsp + tomcat 连接Oracle数据实例
  5. SAP CRM呼叫中心end按钮的实现逻辑
  6. 跨站点脚本(XSS)和预防
  7. 简单循迹小车实验心得_红外自动循迹小车实验报告
  8. Android开发笔记(三十六)展示类控件
  9. 嵌入式数据库与数据库服务器
  10. 网络知识 -- 第二部
  11. [echarts] 柱状图 改变划过柱子时的阴影颜色
  12. ddos应急处理_DDoS攻击应急体系知多少?
  13. linux ubuntu bionic,如何升级Ubuntu到18.04 LTS Bionic Beaver
  14. javaScript+css+html——键盘事件(通过键盘上下左右控制图形位置)
  15. [转]老师几乎气绝身亡,搞笑....
  16. Suit and Tie (在线swap 贪心 思维)
  17. 为什么说jsp被替代了_您说什么:最喜欢的Windows资源管理器替代品
  18. 基于Cortex-M7内核STM32F767NIH6,STM32F767VGT6,STM32F767VIT6嵌入式技术资料
  19. ISE14.7生成MCS文件
  20. 滤波器入门RLC电路BSF

热门文章

  1. 用JavaScript获取表单里的值
  2. Spring之Bean的配置(一)
  3. 基于 KubeVela 与 Kubernetes 打造“无限能力”的开放 PaaS
  4. Serverless Kubernetes:理想,现实与未来
  5. 长话短说,阿里云原生团队招人,急
  6. 都已经十岁的 Apache Dubbo,还能再乘风破浪吗?
  7. Helm 3 发布 | 云原生生态周报 Vol. 27
  8. 知道c语言单元测试答案西安工程大学免费,C语言程序设计(西安工程大学)知到章节测试题答案...
  9. python校园网登录_python实现校园网自动登录的示例讲解
  10. php pdo 怎么循环,php – 在循环内绑定PDO语句的参数