常见算法 - 按大小合并多个有序链表

2023-11-02

leetcode(23):

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


思路:可以想到可以两两合并链表,循环一次,再两两合并(leetcode21),直到合并成一个。那么就可以想到用二分法,然后两两合并。当然如果可以,也可以用其他有规律的选择两两合并。

public class L23MergekSortedLists {
	 public  static ListNode mergeKLists(ListNode[] lists) {
	        
		 if(lists.length == 0){
			 return null;
		 }else if(lists.length == 1){
			 return lists[0];
		 }
		 int length = lists.length;
		 
		 while(length > 1){
			 int mid = (length+1)/2;
			 for (int i = 0; i < length/2; i++) {
				lists[i] = mergeTwoList(lists[i],lists[mid+1]);
			 }
			 length = mid;
		 }
		 return lists[0];
	 }

	private static ListNode mergeTwoList(ListNode listNode, ListNode listNode2) {
		
		if(listNode == null && listNode2 == null){
			return null;
		}else if(listNode == null){
			return listNode2;
		}else if(listNode2 == null){
			return listNode;
		}
		ListNode head = new ListNode(0);
		ListNode dummyHead = head;
		while(listNode != null && listNode2 != null){
			if(listNode.val >= listNode2.val){
				head.next = listNode;
				listNode = listNode.next;
			}else {
				head.next = listNode2;
				listNode2 = listNode2.next;
			}
			head = head.next;
		}
		if(listNode != null){
			head.next = listNode;
		}
		if(listNode2 != null){
			head.next = listNode2;
		}
		return dummyHead.next;
	}
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

常见算法 - 按大小合并多个有序链表 的相关文章

  • 【MongoDB】Ubuntu22.04 下安装 MongoDB

    文章目录 Ubuntu 22 04 安装 MongoDB 后台启动 MongoDB shell 连入 MongoDB 服务 MongoDB 用户权限认证 创建 root 用户 开启认证 重启 MongoDB 服务 创建其他用户 查看用户信息
  • cnn图像质量评价

    参考 https blog csdn net moxibingdao article details 107096783 上面左图为原图 中间为经过JPEG2000压缩后的图 右图为高斯模糊后的图 从清晰度来讲 肯定第一幅图质量更高 质量评
  • BGP--边界网关协议

    目录 BGP和IGP区别 BGP协议关注点 BGP数据包 open包 Keeplive包 update包 notification包 Route refresh包 BGP的状态机 IDLE 空闲状态 Connect 连接状态 Opensen
  • 【机器学习】KNN算法介绍及py实现(详细代码,通俗易懂)

    KNN算法 K Nearest Neighbors 目标 看完这篇博客你将学会 用KNN算法来对数据进行分类 在这里 我们将用knn对一个顾客数据集进行分类 不过什么是knn呢 什么是K Nearest Neighbors 直观翻译就是k个
  • JenkinsDay18-查看服务器有哪些JOB

    http istester com jenkins 468 html
  • 取模(mod)与取余(rem)的区别

    1 取余 rem 3 2 1 rem 3 2 1 rem 3 2 1 rem 3 2 1 2 取模 mod 3 2 1 mod 3 2 1 mod 3 2 1 mod 3 2 1 由此可以看出 rem和mod是有符号区别的 当除数与被除数的
  • Golang 面试题总结

    一 基础部分 Go 语言的设计哲学 简单 显式 组合 并发和面向工程 简单 是指 Go 语言特性始终保持在少且足够的水平 不走语言特性融合的道路 但又不乏生产力 简单是 Go 生产力的源泉 也是 Go 对开发者的最大吸引力 显式 是指任何代
  • UE4 计算两点之间的某个点

    UE4 计算两点之间的某个点
  • IO/NIO 例子

    题目 passport日志由以下三个字段组成 用户名 访问时间 访问者的IP地址 要求在passport日志中进行以下操作 1 找到访问次数最多的用户名 并求出访问次数 2 找到指定用户的访问记录 要求用IO NIO实现 思路如下 1 首先
  • 【JS基础】(一)JavaScript简介及在HTML中使用JavaScript

    一 JavaScript简介 1 JavaScript的实现 JavaScript 是一种专为与网页交互而设计的脚本语言 由下列三个不同的部分组成 1 核心 ECMAScript 由 ECMA 262 定义 提供核心语言功能 描述了该语言的
  • linux centos安装minio

    第一步 进入 opt 目录 创建minio文件夹 cd opt mkdir minio 第二步 wget下载安装包 命令 wegt https dl minio io server minio release linux amd64 min
  • 渗透测试常用Python工具全集

    如果你从事漏洞研究 逆向工程或者渗透测试 应该绝对试试 Python 网络 Scapy Scapy3k 发送 嗅探 解析和伪造网络数据包 可交互使用或作为一个库使用 pypcap Pcapy 和 pylibpcap 一些不同的libpcap
  • 华为OD机试 - 二叉树中序遍历(Java

    题目描述 根据给定的二叉树结构描述字符串 输出该二叉树按照中序遍历结果字符串 中序遍历顺序为 左子树 根结点 右子树 输入描述 由大小写字母 左右大括号 逗号组成的字符串 字母代表一个节点值 左右括号内包含该节点的子节点 左右子节点使用逗号
  • org.springframework.orm.jpa.JpaSystemException: could not execute query;

    报错来源 在配置好的idea上 把代码生成器自动生成的代码导入带项目中 直接进行findALl全查 报错 如下图 尝试解决方法 数据库运行sql语句 查询成功 数据ok 数据乱码 数据库编码格式utf8 数据库可插入正常中文 清空缓存 重新
  • PLSQL Developer 14安装

    资源 百度网盘 链接 https pan baidu com s 1A4DeaKPF7y 0o90nVKFbZA pwd 6udw 提取码 6udw 阿里网盘 PLSQL Developer 14破解版 https www aliyundr
  • [JAVA]移除特定的链表元素

    在java中 移除链表中特定的元素 class ListNode int val ListNode next ListNode ListNode int val this val val public class Test public L
  • FinsTCP协议报文详细分析

    Begin 前言 今天跟大家分享一下关于欧姆龙PLC的Fins协议的协议说明 欧姆龙PLC的Fins协议是公开的协议 大家可以去官网下载 但是由于原文档内容较多 也比较复杂 所以很多人可能看不明白 所以做了一个精简的整理版本 欧姆龙Fins
  • grep命令常用用法示例

    参数列表 color auto 或者 color 表示对匹配到的文本着色显示 i 在搜索的时候忽略大小写 n 显示结果所在行号 c 统计匹配到的行数 注意 是匹配到的总行数 不是匹配到的次数 o 只显示符合条件的字符串 但是不整行显示 每个
  • 错误: 编码 GBK 的不可映射字符 (0x80)

    在我想要在命令行使用println输出一些中文的时候 发现编码出现错误 原因 java程序在编译的时候 需要使用JDK开发工具包中的JAVAC EXE命令 而JDK开发工具包是国际版的 默认格式为UNICODE的编码格式 因此在默认情况下

随机推荐

  • Apollo客户端配置获取深度解析

    Apollo客户端配置获取深度解析 Apollo 阿波罗 是携程框架部门研发的开源配置管理中心 能够集中化管理应用不同环境 不同集群的配置 配置修改后能够实时推送到应用端 并且具备规范的权限 流程治理等特性 这篇文章主要来剖析客户端获取配置
  • Unity小地图的实现

    关于小地图中的图片显示 我用了缩略图 其实就是直接顶视角对场景截个图当小地图用 其他的做法有RenderTexture等 但是需要建立一个相机跟随 对于开放世界大场景不错 但对于小点的场景 就不如直接拿张图片 开销低且方便 场景是官方商店的
  • (3)MyBatis-Plus待开发

    常用注解 TableName MyBatis Plus在确定操作的表时 由BaseMapper的泛型决定即实体类型决定 且默认操作的表名和实体类型的类名一致 如果不一致则会因找不到表报异常 向表中插入一条数据 Test public voi
  • vgg16对猫狗分类

    from keras models import Sequential from keras layers import Conv2D MaxPool2D Activation Dropout Flatten Dense from kera
  • VS2017+OpenCV+Halcon实现包装袋日期识别(一)——目标提取

    前言 本文将介绍在vs平台上OpenCV联合Halcon 实现包装袋的日期识别 本文仅供学习和参考 若有不妥的地方 欢迎友善指出 本示例分为三部分 第一部分介绍使用OpenCV提取目标区域 第二部分介绍使用Halcon的OCR进行日期识别
  • 数据仓库主题九-(事务事实表)

    事务事实表 对于单事务事实表 一个业务过程建立一个事实表 只反映一个业务过程的事实 对于多事务事实表 在同一个事实表中反映多个业务过程 多个业务过程是否放到同一个事实表中 订单作为交易行为的核心载体 直接反应了交易的状况 订单的流转回产生很
  • vue + element-ui el-form-item循环校验及 el-table和el-form表单校验嵌套使用

    vue element ui el form item循环校验及 el table和el form表单校验嵌套使用 第一种 可以无限循环无限嵌套 支持同步异步 更加灵活 拓展性更强 另一种 每个form item都当成一个form 然后循环
  • makefile学习2

    变量赋值 基本赋值 与位置无关 可能被后面的语句改变 覆盖之前的值 与位置有关 是如果没有被赋值过就赋予等号后面的值 是添加等号后面的值 strip函数 strip STRINT 函数名称 去空格函数 strip 函数功能 去掉字串 若干单
  • 阿里钉钉Android实习面试也太太太太难了吧,对算法的要求堪比字节

    本人研究生在读 在2月26日找了师兄内推阿里钉钉团队 28号接到了约1面的电话 幸好我提前准备了一个多月的样子 刷面试题 刷LeetCode 面了之后才觉得自己刷少了 对于我这样一个实习生来说题目还是有些偏难 不过在4月20号终于拿到意向书
  • 对话MVP

    换位思考 我想到通过知识分享来帮助更多开发者解决开发细节问题 林宣名 开源社区成立以来 吸引汇聚了许多热爱分享 交流的技术爱好者 为感谢大家一路以来对FISCO BCOS的支持与贡献 社区开放FISCO BCOS MVP认定 以鼓励为开源社
  • MySQL-SQL InnoDB引擎 (下)

    作者 小刘在C站 个人主页 小刘主页 努力不一定有回报 但一定会有收获加油 一起努力 共赴美好人生 学习两年总结出的运维经验 以及思科模拟器全套网络实验教程 专栏 云计算技术 小刘私信可以随便问 只要会绝不吝啬 感谢CSDN让你我相遇 前言
  • 2023最新软件测试面试题大全(包含答案)

    前言 在我认为 对于测试面试以及进阶的最佳学习方法莫过于刷题 博客 书籍 视频 总结 前几者博主将淋漓尽致地挥毫于这篇博客文章中 至于总结在于个人 实际上越到后面你会发现面试并不难 其次就是在刷题的过程中有没有去思考 刷题只是次之 这又是一
  • vue json数据可视化展示

    使用vue json viewer插件 官网地址 https www npmjs com package vue json viewer 安装vue json viewer插件 npm install vue json viewer sav
  • 文件映射mmap简单设置文件大小(lseek (ftruncate可以设置文件大小))__使用mmap即文件映射实现文件的快速复制代码

    lseek fd pagesize 10 100 SEEK SET lseek应该是文件指针移动到的位置 why mmap1是文件的长度呢 lseek 是获取文件的长度 移动到最后 则是文件的总长 如lseek fd 80 1 write
  • js获取当前时间(昨天、今天、明天)

    1 时间格式化 1 昨天的时间 2 var day1 new Date 3 day1 setTime day1 getTime 24 60 60 1000 4 var s1 day1 getFullYear day1 getMonth 1
  • 【牛客网机试】写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。

    题目描述 写出一个程序 接受一个十六进制的数 输出该数值的十进制表示 输入描述 输入一个十六进制的数值字符串 注意 一个用例会同时有多组输入数据 请参考帖子https www nowcoder com discuss 276处理多组输入的问
  • 起名字!

    五一假期没有出去 闲来找了以下名字 仅以参考 黄哲轩 黄凯轩 黄良宇 黄思禾 黄景龙 黄作湛 黄沐东 黄阳棣 黄骁辉 黄浩锭 黄雷星 黄海城 黄文冰 黄箫程 黄海泽 黄鑫群 黄子铭 黄嘉涛 黄智豪 黄之维 黄逸鑫 黄培祺 黄圣东 黄曙橙 黄
  • 快速入门高斯过程(Gaussian process)回归预测

    前言 这篇文章主要是教会你如何快速了解高斯过程进行回归预测的 并没有太多的公式推导 只有简单的相关的概念的介绍 如果您要自己掌握并使用高斯过程进行一个简单的预测 当然还需要进行一些基础知识学习的 我会在文章最后推荐一些博主有关高斯过程详细介
  • 【Rust 基础篇】Rust Never类型:表示不会返回的

    题解 牛群的重新排列 import java util public class ListNode int val ListNode next 题解 二叉树之寻找第k大 考察二叉树的深度优先遍历 二叉搜索树中序遍历后可以得到升序的序列 所以
  • 常见算法 - 按大小合并多个有序链表

    leetcode 23 Merge k sorted linked lists and return it as one sorted list Analyze and describe its complexity Example Inp