21. 合并两个有序链表 --力扣 --JAVA

题目

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

解题思路

  1. 判断特殊情况,如:两个列表中其中一个为空;
  2. 创建一个初始节点用于返回;
  3. 通过while循环来逐个遍历链表,并对比节点值;
  4. 将为遍历完的链表直接赋值给记录节点(因为链表当前节点包含下一个节点的信息,所以不需要逐个遍历来进行赋值);

代码展示

java 复制代码
class Solution {
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
        if(list1 == null){
            return list2;
        }
        if(list2 == null){
            return list1;
        }
        ListNode ans = null;
        if(list1.val <= list2.val){
            ans = list1;
            list1 = list1.next;
        } else {
            ans = list2;
            list2 = list2.next;
        }
        //记录节点
        ListNode nex = ans;
        while (list1 != null && list2 != null){
            if(list1.val <= list2.val){
                nex.next = list1;
                list1 = list1.next;
            } else {
                nex.next = list2;
                list2 = list2.next;
            }
            nex = nex.next;
        }
        if(list1 == null){
            nex.next = list2;
        } else {
            nex.next = list1;
        }
        return ans;
    }
}
相关推荐
xianyinsuifeng1 分钟前
C语言性能优化实战:从 printf 到 write,再到批量输出(性能提升30%+)
算法
Halo_tjn2 分钟前
Java 内部类
java·开发语言·算法
开心码农1号4 分钟前
Go关于切边变量本身地址和内部指向地址
前端·算法
旖-旎5 分钟前
栈(验证栈序列)(5)
c++·算法·leetcode·力扣·
三毛的二哥6 分钟前
障碍物遮挡判断算法
人工智能·算法·计算机视觉·3d
啊我不会诶9 分钟前
2025ICPC南昌邀请赛vp补题
算法
码完就睡13 分钟前
数据结构——循环队列的设计及函数实现(C语言)
数据结构
发发就是发18 分钟前
I2C适配器与算法:从一次诡异的时序问题说起
服务器·驱动开发·单片机·嵌入式硬件·算法·fpga开发
啊哦呃咦唔鱼19 分钟前
leetcode二分查找
数据结构·算法·leetcode
郝学胜-神的一滴32 分钟前
[ 力扣 1124 ] 解锁最长良好时段问题:前缀和+哈希表的优雅解法
java·开发语言·数据结构·python·算法·leetcode·散列表