当前位置: 首页 > news >正文

【Hot100】LeetCode—21. 合并两个有序链表

目录

  • 1- 思路
    • 思路
  • 2- 实现
    • ⭐21. 合并两个有序链表——题解思路
  • 3- ACM 实现


  • 原题连接:21. 合并两个有序链表

1- 思路

思路

思路如下 :①定义四个指针、②通过判断两个 list的指针结果 、③移动 三个指针来收集结果

  • ① 定义四个指针
    • curAcurB 分别用来遍历 list1list2
    • dummyHead 用来记录头结点
    • cur 用来记录合并后的链表的当前结点
  • ② 利用 while 循环遍历两个链表:移动三个指针
  • ③ 最终结果,判断curAcurB哪个未遍历完,直接拼接在 cur 后面即可

2- 实现

⭐21. 合并两个有序链表——题解思路

在这里插入图片描述

class Solution {public ListNode mergeTwoLists(ListNode list1, ListNode list2) {ListNode curA = list1;ListNode curB = list2;ListNode dummyHead = new ListNode(-1);ListNode cur = dummyHead;while(curA!=null && curB!=null){if(curA.val < curB.val){cur.next = curA;curA = curA.next;}else{cur.next = curB;curB = curB.next;}cur = cur.next;}if(curA !=null){cur.next = curA;}if(curB !=null){cur.next = curB;}return dummyHead.next;}
}

3- ACM 实现

public class mergeList {public static class ListNode {int val;ListNode next;ListNode(int x) {val = x;next = null;}}public static ListNode mergeList(ListNode list1,ListNode list2){// 1.数据结构ListNode curA = list1;ListNode curB = list2;ListNode dummyHead = new ListNode(0);ListNode cur = dummyHead;while(curA!=null && curB!=null){if(curA.val < curB.val){cur.next = curA;curA = curA.next;}else{cur.next = curB;curB = curB.next;}cur = cur.next;}if(curA!=null){cur.next = curA;}if(curB!=null){cur.next = curB;}return dummyHead.next;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);
// 读取第一个链表的节点数量int n1 = sc.nextInt();ListNode head1 = null, tail1 = null;for (int i = 0; i < n1; i++) {int val = sc.nextInt();ListNode newNode = new ListNode(val);if (head1 == null) {head1 = newNode;tail1 = newNode;} else {tail1.next = newNode;tail1 = newNode;}}// 读取第二个链表的节点数量int n2 = sc.nextInt();ListNode head2 = null, tail2 = null;for (int i = 0; i < n2; i++) {int val = sc.nextInt();ListNode newNode = new ListNode(val);if (head2 == null) {head2 = newNode;tail2 = newNode;} else {tail2.next = newNode;tail2 = newNode;}}ListNode forRes = mergeList(head1,head2);while(forRes!=null){System.out.print(forRes.val+" ");forRes = forRes.next;}}}

http://www.mrgr.cn/news/1290.html

相关文章:

  • 这是啥设计模式-适配模式
  • 数据结构----栈
  • sql注入——sqlilabs27-36
  • centos7 支持百万长连接,需要调优哪些参数?
  • laravel使用SSH 隧道连接远程数据库
  • FastAPI个人入门学习
  • 【原创公式】【完全二叉树】叶结点的计算【数据结构】
  • ESP32CAM人工智能教学19
  • SPI驱动学习一(协议原理)
  • 《黑神话:悟空》媒体评分解禁 M站均分82
  • 计算机网络速成(二)
  • 合宙LuatOS AIR700 IPV6 TCP 客户端向NodeRed发送数据
  • Aerospike学习笔记
  • 白骑士的C#教学附加篇 5.1 C#开发工具
  • QT网络编程: 实现UDP通讯设置
  • 大数据ETL工具(Sqoop, DataX, Kettle)对比
  • JMeter性能优化实践:提升测试效率
  • PyTorch数据子集采样精粹:torch.utils.data.Subset深度解析
  • (三)Flink Source 数据源
  • Navicat Premium Lite: 简化版的数据库管理和开发工具