【链表】合并k个以排序的链表(归并排序)_暮色_年华的博客-CSDN博客

相当于合并n个有序的单链表,且每个单链表长度为1。

把单链表每个加在list中,然后套用归并排序的函数。

import java.util.*;/** public class ListNode {*   int val;*   ListNode next = null;* }*/public class Solution {/*** * @param head ListNode类 the head node* @return ListNode类*/public ListNode sortInList (ListNode head) {// write code hereif(head==null)return null;ArrayList<ListNode>list=new ArrayList<>();ListNode p=head;while(p!=null){ListNode q=p.next;p.next=null;list.add(p);p=q;}return mergeKLists(list);}public ListNode merge(ListNode l1,ListNode l2){if(l1==null||l2==null){return l1==null?l2:l1;}ListNode dummyNode=new ListNode(-1);ListNode cur=dummyNode;while(l1!=null&&l2!=null){if(l1.val<l2.val){cur.next=l1;l1=l1.next;}else{cur.next=l2;l2=l2.next;}cur=cur.next;}cur.next=(l1==null?l2:l1);return dummyNode.next;}public ListNode mergeList(ArrayList<ListNode> lists,int L,int R){if(L==R){return lists.get(L);}if(L>R)return null;int mid=L+((R-L)>>1);return merge(mergeList(lists,L,mid),mergeList(lists,mid+1,R));}public ListNode mergeKLists(ArrayList<ListNode> lists) {return mergeList(lists,0,lists.size()-1);}
}

【链表】单链表的排序(归并排序)相关推荐

  1. 建立单链表 单链表的插入_单链列表插入

    建立单链表 单链表的插入 All possible cases: 所有可能的情况: Inserting at beginning 开始插入 Inserting at the ending 在末尾插入 ...

  2. 数据结构上机-尾、头插法建立单链表-单链表遍历C语言完整代码实现

    点击此处跳转视频链接:数据结构上机-尾.头插法建立单链表-单链表遍历C语言完整代码实现

  3. 数据结构--链表--单链表中环的检测,环的入口,环的长度的计算

    就如数字6一样的单链表结构,如何检测是否有6下部的○呢,并且求交叉点位置 思路 使用快慢指针(一个一次走2步,一个走1步),若快慢指针第一次相遇,则有环 慢指针路程 s=a+bs = a+bs=a+b ...

  4. 数据结构-链表-单链表

    单链表 文章目录 单链表 创建Node节点 链表的常见链表常见操作: 创建Node节点 package com.njau.link;/*** 链表结点的实体类* @author 张文军**/publi ...

  5. 单链表-单链表拆分为A和B链表(尾插法+头插法)

    题意: 设C{a1,b1,a2.b2-an,bn}为一线性表,采用带头结点的单链表hc存放,设计一个就地算法,将其拆分为两个线性表,每个线性表均采用带头结点的单链表存储,使得: A = {a1,a2. ...

  6. 单链表-单链表拆分为两个线性表(尾插法+尾插法)

    题意: 设C{a1,b1,a2.b2-an,bn}为一线性表,采用带头结点的单链表hc存放,设计一个就地算法,将其拆分为两个线性表,每个线性表均采用带头结点的单链表存储,使得: A = {a1,a2. ...

  7. 单链表-单链表A拆分为A(偶)和C(奇) (尾插法建表)

    题意: 有一个整数元素建立的单链表A,设计一个算法,将其拆分成两个链表A 和B,使得链表A中含有所有偶数的结点,B链表中含有所有的奇数结点.且保持原来的相对次序. 单链表的存储结构: typedef ...

  8. 数据结构与算法笔记(三)—— 链表(单链表、循环链表、双向链表)

    一.前沿 1.1.为什么需要链表 顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时又需要进行数据的搬迁,所以使用起来并不是很灵活. 链表结构可以充分利用计算机内存空间,实现灵活的内 ...

  9. 【编程2】单链表+单链表反转(LeetCode. 206)

    文章目录 一.链表 二.单链表 1.基本概念 (1)单链表 (2)头指针--必有元素 (3)头结点--非必需元素 (4)尾结点 2.查找操作 3.插入操作 4.删除操作 三.设计思想-- 时间 < ...

  10. c++ 链表_算法学习笔记 - 链表 - 单链表的粗糙实现

    常用的链表有单链表.双链表.循环链表. 概念看得再多,理解得再多,也不一定能够写得出来.所以动动手,多练习才是提升能力的关键. 有朋友留言说道:建议大家在实现之前的思考时间不要太长.一是先用自己能想到 ...

最新文章

  1. 手把手教你 用C++实现一个 可持久化 的http_server
  2. (转)一个vue路由参数传递的注意点
  3. 阿里云Kubernetes服务 - Service Broker快速入门指南
  4. 科大星云诗社动态20210810
  5. .net Redis缓存优化提高加载速度和服务器性能(二)
  6. php生成10万个字符串,有什么好的方法可以生成十万条不重复的13位纯数字字符串...
  7. 02-print的用法
  8. 推特警告称开发者 API 密钥或遭泄露
  9. Java面试——多线程面试题
  10. pdf转换成word后有文字叠加_Pdf转换成word文字的好方法
  11. [转载]三小时学会Kubernetes:容器编排详细指南
  12. 视频教程-Kali Linux渗透测试全程课与脚本语言编程系列课程-渗透测试
  13. c语言错误:error C2018: unknown character '0xa3'
  14. 基于C#的服装店进销存管理系统设计与实现
  15. 佳能镜头EOS系统EF协议逆向工程(一)
  16. 《夜宴》Vs《黄金甲》之8大PK看点及冲奥预测
  17. 绝地求生测试服画面优化软件,《绝地求生大逃杀》最佳画质优化教程
  18. 黑马—private关键字-封装
  19. 2021年12月中国汽车企业出口量排行榜:特斯拉上海12月出口量仅245辆,占比其全年出口总量的0.15%(附月榜TOP39详单)
  20. mac下关于node版本的切换

热门文章

  1. C# 很基础的那些东西
  2. Bailian4141 砝码称重【DP】
  3. CCF201912-2 回收站选址(100分)【序列处理】
  4. Bailian4021 最大乘积【序列处理】
  5. Vijos P1772 巧妙填数【进制+置换】
  6. HDU1406 完数【水题】
  7. 【联系】—— Beta 分布与二项分布、共轭分布
  8. 整数、区间与区间端点
  9. c语言怎么求一个数的所有因数,【代码】求一个数的因数和、求优化、顺便也供新人参考算法...
  10. dedeindex php不显示_dede去掉(禁止)首页index.html默认访问 最终显示index.php