[leetcode] 21. 合并两个有序链表

文章目录

  • 题目描述
  • 解题方法
    • 双指针遍历
      • java代码

题目描述

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例 1:
链表升序合并

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

示例 2:

输入:l1 = [], l2 = []
输出:[]

示例 3:

输入:l1 = [], l2 = [0]
输出:[0]

提示:

  • 两个链表的节点数目范围是 [0, 50]
  • -100 <= Node.val <= 100
  • l1l2 均按 非递减顺序 排列

解题方法

双指针遍历

为了方便返回链表后的头结点,我们设置一个哑结点(dummyNode),哑结点的next指针指向升序链表的头结点。

已知两个链表都是升序链表,我们初始设置指针p指向哑结点,指针l1l2分别指向两个链表的头结点,此时最小的元素必然在l1.vall2.val之间,若最小元素是l1.val,则将pnext指针指向l1的结点,p也重新指向l1的结点,l1指针指向l1.next的结点;若最小元素是l2.val,则将pnext指针指向l2的结点,p也重新指向l2的结点,l2指针指向l2.next的结点。下一个最小的元素也必然在l1.vall2.val之间,还是按照上面的方法让l1l2的指针不断往后遍历。直到l1或者l2遍历到末尾时,pnext指针指向l1l2之中还没有遍历到末尾的指针。此时,返回哑结点的next结点即为升序链表的头结点。

java代码

ListNode结构

public class ListNode {public int val;public ListNode next;public ListNode() {}public ListNode(int val) {this.val = val;}public ListNode(int val, ListNode next) {this.val = val;this.next = next;}
}

链表合并方法

public ListNode mergeTwoLists(ListNode list1, ListNode list2) {ListNode dummyNode = new ListNode(0, null);ListNode p = dummyNode;ListNode l1 = list1;ListNode l2 = list2;while (l1 != null && l2 != null) {if (l1.val <= l2.val) {p.next = l1;p = p.next;l1 = l1.next;} else {p.next = l2;p = p.next;l2 = l2.next;}}if (l1 != null) {p.next = l1;} else {p.next = l2;}return dummyNode.next;
}

时间复杂度: O ( M + N ) O(M+N) O(M+N) M M M N N N为两个链表的长度
空间复杂度: O ( 1 ) O(1) O(1)


  • 个人公众号
    个人公众号
  • 个人小游戏
    个人小游戏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/660332.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动驾驶:Apollo如何塑造人类的未来出行

前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff1a;https://www.captainbed.cn/z ChatGPT体验地址 文章目录 前言1. 什么是自定义指令&#xff1f;2. Apollo中的自定义指令2.1 查询中的自定…

sqlalchemy——@listens_for

问&#xff1a;sqlalchemy如何实现&#xff1a;表中指定数据更新时&#xff0c;其time字段自动更新&#xff1f;答&#xff1a;使用listens_for 装饰器来注册事件监听器&#xff0c;确保在项目数据更新时触发相应的处理逻辑。 示例代码如下&#xff1a; # coding: utf-8 impo…

Vue2组件注册:全局组件和局部组件

在Vue 2 中&#xff0c;你可以使用全局注册和局部注册两种方式注册组件。以下是两种方式的示例&#xff1a; • 全局注册 全局注册的组件可以在整个应用中使用&#xff0c;适用于高频的通用组件。 // 在 main.js 或者入口文件中 import Vue from vue import App from ./App.v…

鸿蒙HarmonyOS——AVSession开发指导

AVSession开发指导 说明&#xff1a; AVSession的所有接口均为系统接口&#xff0c;其功能仅提供给系统应用使用。 会话接入端开发指导 基本概念 会话元数据AVMetadata: 媒体数据相关属性&#xff0c;包含标识当前媒体的ID(assetId)&#xff0c;上一首媒体的ID(previousAsset…

17. Spring Boot Actuator

17. Spring Boot Actuator Spring Boot执行器(Actuator)提供安全端点&#xff0c;用于监视和管理Spring Boot应用程序。 默认情况下&#xff0c;所有执行器端点都是安全的。 在本章中&#xff0c;将详细了解如何为应用程序启用Spring Boot执行器。 启用Spring Boot Actuator …

光纤熔接-热熔

实验教学日的及具体要求 目的 1.掌握室外光缆、皮线光缆的开剥方法。 2.掌握应用光纤切割刀制作光纤端面的方法 3.掌握光纤熔接的基本知识。 4.掌握光纤熔接机的使用方法及接续步骤。 任务 1.完成2芯光缆在终端盒内与尾纤的熔接 2.用激光笔完成光纤熔接检测。 …

如何使用mock.js实现接口测试的自动化?

Mock.js 基础用法介绍 Mock.js是一个常用于生成随机数据和拦截Ajax请求的JavaScript库。本文将介绍Mock.js的用法&#xff0c;包括安装和基础用法&#xff0c;在开始前我们可以看下看&#xff1a;了解 Mock.js 的语法规范。 安装 可以通过npm安装Mock.js&#xff1a; npm i…

Debezium发布历史94

原文地址&#xff1a; https://debezium.io/blog/2020/09/16/debezium-1-3-beta2-released/ 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. Debezium 1.3.0.Beta2 发布 2020 年 9 月 16 日 作者&#xff1a; Gu…

敏捷认证大热:PMI-ACP

你是否在寻找一个能让你在不断变化的职场环境中脱颖而出的认证&#xff1f;PMI-ACP正是你需要的&#xff01;这个由美国项目管理协会PMI颁发的认证&#xff0c;是全球敏捷项目管理领域的权威代表。无论你是希望转型到项目管理领域&#xff0c;还是想提升现有项目管理技能&#…

代码随想录算法训练营第二十三天|669.修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

669.修剪二叉搜索树 public class Solution {public TreeNode TrimBST(TreeNode root, int low, int high) {if(rootnull){return null;}if(root.val<low){var rightTrimBST(root.right,low,high);return right;}if(root.val>high){var leftTrimBST(root.left,low,high)…

Kafka下载安装及基本使用

目录 Kafka介绍 消息队列的作用 消息队列的优势 应用解耦 异步提速 削峰填谷 为什么要用Kafka Kafka下载安装 Kafka快速上手&#xff08;单机体验&#xff09; 1. 启动zookeeper服务 2. 启动kafka服务 3. 简单收发消息 Kakfa的消息传递机制 Kafka介绍 Apache Kafka…

数据库面试题汇总

如何定位慢查询SQL慢语句执行的很慢&#xff0c;如何分析&#xff1f;索引概念及索引底层数据结构&#xff1f;聚簇索引和非聚簇索引、回表查询&#xff1f;覆盖索引、超大分页优化索引创建的原则什么情况下索引会失效谈一谈你对SQL优化的经验事务的特性并发事务问题、隔离级别…

联邦学习公式推导--为何只需要发送模型参数而不是模型梯度?

参考文献&#xff1a;https://arxiv.org/pdf/1602.05629v4.pdf 对于一个机器学习应用来说&#xff0c;我们需要找到一个目标函数&#xff0c;使其最小化 f ( w ) 1 n ∑ i 1 n f i ( w ) f(w) \frac{1}{n}\sum_{i1}^{n}f_i(w) f(w)n1​i1∑n​fi​(w) 上面等式中&#xff…

Vue3中的watch函数使用

Vue2和Vue3中的watch函数作用是一样的&#xff0c;用来监测数据的变化并在数据变化时触发对应的回调函数&#xff0c;但Vue2和Vue3中的watch在使用的细节上有所不同&#xff0c;Vue3中的watch在监测reactive定义的响应式数据时&#xff0c;oldValue&#xff08;旧的值&#xff…

模拟实现哈希表 - HashMap(Java版本)

目录 1. 概念 2. 冲突-概念 3. 冲突-避免 4. 冲突-避免-哈希函数设计 5. 冲突-避免-负载因子调节 ⭐⭐⭐⭐⭐ 6. 冲突-解决 6.1 冲突-解决-闭散列 6.2 冲突-解决-开散列/哈希桶 ⭐⭐⭐⭐⭐ 7. 冲突严重时的解决办法 8. 模拟实现 1. 概念 顺序结构以及平衡树中&#…

揭开时间序列的神秘面纱:特征工程的力量

目录 写在开头1. 什么是特征工程?1.1 特征工程的定义和基本概念1.2 特征工程在传统机器学习中的应用1.3 时间序列领域中特征工程的独特挑战和需求3. 时间序列数据的特征工程技术2.1 数据清洗和预处理2.1.1 缺失值处理2.1.2 异常值检测与处理2.2 时间特征的提取2.2.1 时间戳解析…

MySQL基础(三)-学习笔记

一.innodb引擎&#xff1a; 1). 表空间&#xff1a;表空间是InnoDB存储引擎逻辑结构的最高层&#xff0c;启用了参数 innodb_file_per_table(在 8.0版本中默认开启) &#xff0c;则每张表都会有一个表空间&#xff08;xxx.ibd&#xff09;&#xff0c;一个mysql实例可以对应多个…

计算机网络——网络层(3)

计算机网络——网络层&#xff08;3&#xff09; 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU)1 网络层——控制平面因特网中自治系统内部的路由选择总括考虑因素总结 ISP之间的路由选择&#xff1a;BGP考虑因素总结 SDN控制层面重要组件和功能总结 ICMP主要功能和特点…

京东手机评论分析

文章目录 前言:数据处理1.1数据导入1.2数据描述1.3数据预处理 2.情感分析2.1情感分析安装snownlp包 2.2 情感分直方图情感分直方图 2.3 词云图2.4 关键词提取关键词top10 3 积极评论与消极评论3.1 积极评论与消极评论占比计算积极评论与消极评论各自的数目积极评论占比 3.2 消极…

大脑模型认知实验报告(脑与认知期末考核)

实验名称&#xff1a;大脑模型认知实验 实验目的&#xff1a; &#xff08;1&#xff09;对大脑的三部分、七层结构、区域划分有一个清晰的认识。 &#xff08;2&#xff09;对脑的各个区域的基本功能以及脑的工作方式有所了解。 实验环境&#xff1a;大脑模具、配有详细标…