【蓝桥Java每日一练】————3.合并两个有序链表

简介: 今天的每日一练带来一道基础的链表处理题目,能有效锻炼我们数据结构对于链表的处理能力。

🍋1.合并两个有序链表


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


image.png


题目链接:合并两个有序链表https://leetcode-cn.com/problems/merge-two-sorted-lists/        


         因为题目中给的两条链表本身就是有序的,首先我们需要先有一个虚拟的头结点来接收答案,然后我们可以用两个指针从两链表的头部开始判断,将值更小的一个结点接到虚拟头结点上来,然后让该指针向右移动,继续同样的操作。直到某一条链表为空,然后就另外一条链接直接接上答案链表即可。


class Solution {
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
        //如果一条链表为空可以直接返回另外一条
        if(list1==null||list2==null){
            return list1==null? list2:list1;
        }
        //虚拟头结点
        ListNode dummyHead=new ListNode();
        //用来遍历两个链表
        ListNode a=list1;
        ListNode b=list2;
        //用来遍历答案链表
        ListNode c=dummyHead;
        while(a!=null&&b!=null){
            //将更小的结点接上c,然后向右移动
            if(a.val<b.val){
                c.next=a;
                c=c.next;
                a=a.next;
            }else{
                c.next=b;
                c=c.next;
                b=b.next;
            }
        }
        //因为不知道是a链表空了还是b链表,所以两条都判断
        //b空了,把a全接上
        while(a!=null){
            c.next=a;
            c=c.next;
            a=a.next;
        }
        //a空了,把b全接上
        while(b!=null){
            c.next=b;
            c=c.next;
            b=b.next;
        }
        //虚拟头结点的next才应该是答案数组真正的头结点
        return dummyHead.next;
    }
}

       对于链表的处理能力还是非常重要的,尤其是在面试中,更是备受考官青睐,所以大家一定要掌握对于链表的处理能力。


相关文章
|
29天前
|
存储 Java
|
1月前
|
存储 Java
java实现单链表的创建、增、删、改、查
这篇文章详细介绍了Java中如何实现单链表的创建以及对单链表进行增加、删除、修改、查询等操作的方法,并提供了相应的代码示例。
java实现单链表的创建、增、删、改、查
|
1月前
|
存储 Java
【Java集合类面试十】、HashMap中的循环链表是如何产生的?
在多线程环境下,HashMap在扩容时如果发生条件竞争,元素的插入顺序可能形成循环链表,导致死循环。
|
1月前
|
存储 Java
java实现双向链表的增删改查
这篇文章展示了如何在Java中实现双向链表的增加、删除、修改和查询操作,并通过代码示例演示了在双向链表中存储和操作学生信息的过程。
|
1月前
|
算法 Java
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
43 0
|
1月前
|
存储 算法 Java
LeetCode初级算法题:反转链表+统计N以内的素数+删除排序数组中的重复项Java详解
LeetCode初级算法题:反转链表+统计N以内的素数+删除排序数组中的重复项Java详解
18 0
|
3月前
|
Java Maven
使用Java合并PDF文档
使用Java合并PDF文档
117 0
|
6天前
|
存储 缓存 安全
【Java面试题汇总】多线程、JUC、锁篇(2023版)
线程和进程的区别、CAS的ABA问题、AQS、哪些地方使用了CAS、怎么保证线程安全、线程同步方式、synchronized的用法及原理、Lock、volatile、线程的六个状态、ThreadLocal、线程通信方式、创建方式、两种创建线程池的方法、线程池设置合适的线程数、线程安全的集合?ConcurrentHashMap、JUC
【Java面试题汇总】多线程、JUC、锁篇(2023版)
|
17天前
|
监控 Java 调度
【Java学习】多线程&JUC万字超详解
本文详细介绍了多线程的概念和三种实现方式,还有一些常见的成员方法,CPU的调动方式,多线程的生命周期,还有线程安全问题,锁和死锁的概念,以及等待唤醒机制,阻塞队列,多线程的六种状态,线程池等
79 6
【Java学习】多线程&JUC万字超详解
|
3天前
|
Java
深入理解Java中的多线程编程
本文将探讨Java多线程编程的核心概念和技术,包括线程的创建与管理、同步机制以及并发工具类的应用。我们将通过实例分析,帮助读者更好地理解和应用Java多线程编程,提高程序的性能和响应能力。
15 4