【蓝桥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;
    }
}

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


相关文章
|
3月前
|
Java
java数据结构,双向链表的实现
文章介绍了双向链表的实现,包括数据结构定义、插入和删除操作的代码实现,以及双向链表的其他操作方法,并提供了完整的Java代码实现。
java数据结构,双向链表的实现
|
2月前
|
存储 安全 Java
【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
28 3
|
4月前
|
存储 Java
|
4月前
|
存储 Java
java实现单链表的创建、增、删、改、查
这篇文章详细介绍了Java中如何实现单链表的创建以及对单链表进行增加、删除、修改、查询等操作的方法,并提供了相应的代码示例。
java实现单链表的创建、增、删、改、查
|
4月前
|
存储 Java
【Java集合类面试十】、HashMap中的循环链表是如何产生的?
在多线程环境下,HashMap在扩容时如果发生条件竞争,元素的插入顺序可能形成循环链表,导致死循环。
|
4月前
|
存储 Java
java实现双向链表的增删改查
这篇文章展示了如何在Java中实现双向链表的增加、删除、修改和查询操作,并通过代码示例演示了在双向链表中存储和操作学生信息的过程。
|
4月前
|
算法 Java
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
59 0
|
6月前
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
|
6月前
|
存储 SQL 算法
LeetCode 题目 86:分隔链表
LeetCode 题目 86:分隔链表
|
6月前
|
存储 算法 Java
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
66 2