算法-java

embedded/2024/10/22 17:38:56/

题目来自牛客网

输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。

数据范围: 0≤𝑛≤10000≤n≤1000,−1000≤节点值≤1000−1000≤节点值≤1000
要求:空间复杂度 𝑂(1)O(1),时间复杂度 𝑂(𝑛)O(n)

如输入{1,3,5},{2,4,6}时,合并后的链表为{1,2,3,4,5,6},所以对应的输出为{1,2,3,4,5,6},

import java.util.*;/** public class ListNode {*   int val;*   ListNode next = null;*   public ListNode(int val) {*     this.val = val;*   }* }*/public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param pHead1 ListNode类 * @param pHead2 ListNode类 * @return ListNode类*/public ListNode Merge (ListNode pHead1, ListNode pHead2) {// write code hereif(pHead1 == null) return pHead2;if(pHead2 == null) return pHead1;ListNode res =new ListNode(0);ListNode p=res;while(pHead1 !=null && pHead2!=null){if(pHead1.val <=pHead2.val){res.next =pHead1;pHead1=pHead1.next;}else{res.next=pHead2;pHead2=pHead2.next;}res=res.next;}if(pHead1==null){res.next=pHead2;}else{res.next=pHead1;}return p.next;}
}

这段代码实现了将两个有序链表合并为一个有序链表的功能。下面是对这段代码的解析:

  1. 首先判断两个输入链表是否为空,如果其中一个为空,则直接返回另一个链表。
  2. 创建一个新的链表头节点 res,并用指针 p 指向该头节点,用于构建合并后的链表。
  3. 使用 while 循环,遍历两个输入链表,直到其中一个链表为空。
  4. 在循环中,比较当前两个链表节点的值,将较小的节点接到 res 节点后面,并将指针移动到下一个节点。
  5. 循环结束后,将剩余的非空链表直接接到 res 节点后面。
  6. 返回合并后的链表的头节点,即 res 的下一个节点。

这段代码的时间复杂度为 O(m + n),其中 m 和 n 分别是两个输入链表的长度。因为只需要遍历一遍两个链表即可完成合并操作,所以时间复杂度是线性的。


http://www.ppmy.cn/embedded/41006.html

相关文章

口碑最好的麦克风品牌有哪些?多款高口碑无线领夹麦克风推荐

从直播、拍摄到采访&#xff0c;音频设备对于我们的生活越来越重要&#xff0c;想要拥有更清晰、真实的录音效果&#xff0c;一款优质的无线领夹麦克风肯定是必不可少的&#xff0c;其轻便小巧的特性&#xff0c;不仅适用于手机和相机的直播、录音需求&#xff0c;同时也能满足…

【PyTorch】torch.backends.cudnn.benchmark 和 torch.backends.cudnn.deterministic

1. torch.backends.cudnn.benchmark 在 PyTorch 中&#xff0c;torch.backends.cudnn.benchmark 是一个配置选项&#xff0c;用于在运行时自动选择最优的卷积算法&#xff0c;以提高计算效率。这个设置特别针对使用 CUDA 和 cuDNN 库进行的运算&#xff0c;并在使用具有变化输…

记录:robot_localization传感器数据融合学习

一、参考资料 官方&#xff1a; http://wiki.ros.org/robot_localizationhttp://docs.ros.org/en/noetic/api/robot_localization/html/index.html2015 ROSCon 演讲官方网址&#xff08;youyube上也有这个视频&#xff09;ppt 实践教程 https://kapernikov.com/the-ros-rob…

【JavaEE网络】用Form与Ajax构建HTTP请求

目录 通过 form 表单构造 HTTP 请求form 发送 GET 请求form 发送 POST 请求 通过 ajax 构造 HTTP 请求发送 GET 请求发送 POST 请求发送 application/json 数据封装 ajax 方法 通过 form 表单构造 HTTP 请求 form (表单) 是 HTML 中的一个常用标签. 可以用于给服务器发送 GET …

计算机网络原原理学习资料分享笔记---第三章/第三节(为有梦想的自己加油!)

第三节 停-等协议与 滑动窗口协议 第三节 停-等协议与滑动窗口协议 知识点 1 可靠数据传输基本原理 1 、internet传输层的两个协议&#xff1a;TCP 、UDP。 TCP&#xff1a;可靠数据传输服务。将报文段交给IP传送&#xff0c;而IP只能提供“尽 力”服务&#xff0c;也就是不可…

[微信小程序] 入门笔记2-自定义一个显示组件

[微信小程序] 入门笔记2-自定义一个显示组件 0. 准备工程 新建一个工程,删除清空app的内容和其余文件夹.然后自己新建pages和components创建1个空组件和1个空页面. 设定 view 组件的默认样式,使其自动居中靠上,符合习惯.在app.wxss内定义,作用做个工程. /**app.wxss**/ /* 所…

宝塔环境安装+安装软件教程

游戏&#xff0c;大型网站程序等都安装在服务器上&#xff0c;服务器用的是Linux系统&#xff0c;进行服务器维护需要记住很多linux的命令&#xff0c;这就很麻烦。 宝塔的好处&#xff0c;就是通过一个交互界面就能完成服务器的维护工作&#xff0c;比如更新系统&#xff0c;添…

如何使用phpMyAdmin删除数据库中的表?

本周有一个客户&#xff0c;购买Hostease的Linux虚拟主机&#xff0c;询问我们的在线客服&#xff0c;如何使用phpMyAdmin删除数据库中的表&#xff1f;我们为用户提供相关教程&#xff0c;用户很快解决了遇到的问题。在此&#xff0c;我们分享这个操作教程&#xff0c;希望可以…