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

目录

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;
        }
    }
}
相关推荐
徐子童6 分钟前
优选算法---链表
数据结构·算法·链表·面试题
如意.7597 分钟前
从零开始的指针(3)
算法
2501_9262279425 分钟前
UDP网络编程:【Java】无连接通信到Socket实战(二)
java·网络·udp
cwplh29 分钟前
MX模拟赛总结
算法·动态规划
Sunny_yiyi38 分钟前
Java根据模版导出PDF文件
java·开发语言·pdf
麦兜*40 分钟前
MongoDB 与 GraphQL 结合:现代 API 开发新范式
java·数据库·spring boot·mongodb·spring·maven·graphql
浅川.2542 分钟前
xtuoj 随机数
算法
shan&cen43 分钟前
Day02 集合 | 30. 串联所有单词的子串、146. LRU 缓存、811. 子域名访问计数
java·数据结构·算法·缓存
ITMan彪叔1 小时前
Java MQTT 主流开发方案对比
java·后端