【百日算法计划】:每日一题,见证成长(010)

题目

合并两个排序的链表

输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的

示例1:

输入:1->2->4, 1->3->4

输出:1->1->2->3->4->4

思路

引入一个带虚拟头结点和tail指针的结果链表,把原节点的值比较大小后加入到结果链表中。

java 复制代码
 public ListNode mergeTwoLists(ListNode l1, ListNode l2) {

    if (l1 == null) return l2;
    if (l2 == null) return l1;

    ListNode p1 = l1;
    ListNode p2 = l2;

    //创建一个新链表,用于存放排序好的链表
    ListNode resultNode = new ListNode();
    ListNode tail = resultNode;//尾指针

    while (p1 != null && p2 != null){
        if (p1.val <= p2.val){
            tail.next = p1;
            tail = p1;
            p1 = p1.next;
        } else {
            tail.next = p2;
            tail = p2;
            p2 = p2.next;
        }
    }
    if (p1 != null) tail.next = p1;
    if (p2 != null) tail.next = p2;
    return resultNode.next;
 }
相关推荐
悠哉清闲5 分钟前
C++ 指针与引用
java·c++·算法
然我31 分钟前
链表指针玩不转?从基础到双指针,JS 实战带你破局
前端·数据结构·算法
EndingCoder39 分钟前
算法与前端的可访问性
前端·算法·递归·树形结构
ysa0510301 小时前
竞赛常用加速技巧#模板
c++·笔记·算法
7 971 小时前
C语言基础知识--文件的顺序读写与随机读写
java·数据结构·算法
2401_841003981 小时前
Kubernetes 资源管理全解析
算法·贪心算法
☆璇2 小时前
【数据结构】排序
c语言·开发语言·数据结构·算法·排序算法
艾莉丝努力练剑5 小时前
【LeetCode&数据结构】单链表的应用——反转链表问题、链表的中间节点问题详解
c语言·开发语言·数据结构·学习·算法·leetcode·链表
_殊途7 小时前
《Java HashMap底层原理全解析(源码+性能+面试)》
java·数据结构·算法
珊瑚里的鱼10 小时前
LeetCode 692题解 | 前K个高频单词
开发语言·c++·算法·leetcode·职场和发展·学习方法