当前位置: 首页> 房产> 政策 > 【CT】LeetCode手撕—21. 合并两个有序链表

【CT】LeetCode手撕—21. 合并两个有序链表

时间:2025/7/11 18:35:18来源:https://blog.csdn.net/weixin_44382896/article/details/139648263 浏览次数:1次

目录

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

题目

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

1-思路

双指针:题目提供的 list1 和 list2 就是两个双指针

  • 通过每次移动 list1 和 list2 并判断二者的值,判断完成后将其 插入到新的当前结点 cur.next 后即可完成链表按升序排列。

2- 实现

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

在这里插入图片描述

class Solution {public ListNode mergeTwoLists(ListNode list1, ListNode list2) {// 定义一个 头结点记录位置ListNode dummyHead = new ListNode(0);ListNode cur = dummyHead;while(list1!=null && list2!=null){if(list1.val<list2.val){cur.next = list1;list1 = list1.next;}else{cur.next = list2;list2 = list2.next;}cur = cur.next;}if(list1!=null){cur.next = list1;}if(list2!=null){cur.next = list2;}return dummyHead.next;}
}

3- ACM实现

public class twoLinkASC {static class ListNode{int val;ListNode next;ListNode(){}ListNode(int x){val = x;}}public static ListNode mergeTwoLink(ListNode list1,ListNode list2){// 定义虚拟头ListNode dummyHead = new ListNode(-1);ListNode cur = dummyHead;while(list1!=null && list2!=null){if(list1.val<list2.val){cur.next = list1;list1 = list1.next;}else{cur.next = list2;list2 = list2.next;}cur = cur.next;}if(list1!=null){cur.next = list1;}if(list2!=null){cur.next = list2;}return dummyHead.next;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("输入链表1的长度");ListNode head1=null,tail1=null;int n1 = sc.nextInt();System.out.println("输入链表元素");for(int i = 0 ; i < n1;i++){ListNode nowNode = new ListNode(sc.nextInt());if(head1==null){head1 = nowNode;tail1 = nowNode;}else{tail1.next = nowNode;tail1 = nowNode;}}System.out.println("输入链表2的长度");ListNode head2=null,tail2=null;int n2 = sc.nextInt();System.out.println("输入链表元素");for(int i = 0 ; i < n2;i++){ListNode nowNode = new ListNode(sc.nextInt());if(head2==null){head2 = nowNode;tail2 = nowNode;}else{tail2.next = nowNode;tail2 = nowNode;}}ListNode forRes = mergeTwoLink(head1,head2);while (forRes!=null){System.out.print(forRes.val+" ");forRes = forRes.next;}}
}
关键字:【CT】LeetCode手撕—21. 合并两个有序链表

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: