链表算法之【合并两个有序链表】

目录

LeetCode-21题


LeetCode-21题

将两个升序链表合并成一个新的升序链表并返回

java 复制代码
class Solution {
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
        if (list1 == null)
            return list2;
        if (list2 == null)
            return list1;

        ListNode dummyHead = new ListNode();
        ListNode curr = dummyHead;
        // 双指针
        ListNode p1 = list1;
        ListNode p2 = list2;

        while (p1 != null && p2 != null) {
            // 链入节点值较小的节点
            if (p1.val < p2.val) {
                curr.next = p1;
                p1 = p1.next;
            } else {
                curr.next = p2;
                p2 = p2.next;
            }
            curr = curr.next;
        }
        
        // 处理剩余节点
        if (p1 != null)
            curr.next = p1;
        if (p2 != null)
            curr.next = p2;

        return dummyHead.next;
    }

    private static class ListNode {
        int val;
        ListNode next;

        ListNode() {
        }

        ListNode(int val) {
            this.val = val;
        }

        ListNode(int val, ListNode next) {
            this.val = val;
            this.next = next;
        }
    }
}
相关推荐
ss27312 小时前
手写MyBatis第89弹:动态SQL解析与执行时机深度剖析
java·服务器·windows
Light6012 小时前
LinkedList 头尾插入与随机访问的隐蔽陷阱—— 领码课堂|Java 集合踩坑指南(6):
java·开发语言·性能优化·deque·双向链表·linkedlist·fail-fast
机器学习之心13 小时前
198种组合算法+优化BiGRU双向门控循环单元+SHAP分析+新数据预测+多输出!深度学习可解释分析,强烈安利,粉丝必备!
深度学习·算法·shap分析·新数据预测·优化bigru
心之伊始13 小时前
深入理解 AbstractQueuedSynchronizer(AQS):构建高性能同步器的基石
java·开发语言
小胖xiaopangss13 小时前
栈的压入弹出序列--牛客
数据结构·c++·算法
_给我学起来13 小时前
前缀和数组
算法
程序员莫小特13 小时前
老题新解|求三角形面积
开发语言·数据结构·c++·算法·信息学奥赛一本通
mc235613 小时前
C语言指针详解
c语言·开发语言·算法
静渊谋13 小时前
攻防世界-Check
java·安全·网络安全
Asmalin13 小时前
【代码随想录day 30】 力扣 763. 划分字母区间
算法·leetcode·职场和发展