【 腾讯精选练习 50 题】12—合并两个有序链表【简单】

简介: 【 腾讯精选练习 50 题】12—合并两个有序链表【简单】

题目链接

21. 合并两个有序链表【简单】

题目简介

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

示例 1:

题目解析

  1. 定义一个辅助链表 ListNode newNode = new ListNode(0);,定义一个指针 p3 = newNode
  2. 分一下四种情况
  • l1 == nullp3 直接连接 l2 即可
  • l2 == nullp3 直接连接 l1 即可
  • l1.val <= l2,valp3 直接连接 l1(数值小的) 即可
  • l1.val > l2.valp3 直接连接 l2(数值小的) 即可

题目代码

public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        if(l1 == null && l2 == null){
            return null;
        }
        ListNode p1 = l1;
        ListNode p2 = l2;
        ListNode newNode = new ListNode(0);
        ListNode p3 = newNode;
        while(p1 != null || p2 != null){
            if(p1 == null){
                p3.next = p2;
                p2 = p2.next;
                p3 = p3.next;
            }else if(p2 == null){
                p3.next = p1;
                p1 = p1.next;
                p3 = p3.next;
            }else if(p1.val < p2.val){
                p3.next = p1;
                p1 = p1.next;
                p3 = p3.next;
            }else{
                p3.next = p2;
                p2 = p2.next;
                p3 = p3.next;
            }
        }
        return newNode.next;
    }


相关文章
|
2月前
|
算法
LeetCode刷题---21.合并两个有序链表(双指针)
LeetCode刷题---21.合并两个有序链表(双指针)
【 腾讯精选练习 50 题】01—翻转链表
【 腾讯精选练习 50 题】01—翻转链表
|
4月前
leetcode-21:合并两个有序链表
leetcode-21:合并两个有序链表
24 0
LeetCode | 21. 合并两个有序链表
LeetCode | 21. 合并两个有序链表
|
3月前
|
存储 算法
头歌:第1关:有序单链表的插入操作
头歌:第1关:有序单链表的插入操作
130 0
|
27天前
【力扣】21. 合并两个有序链表
【力扣】21. 合并两个有序链表
|
2月前
|
存储 算法
【数据结构与算法】【腾讯阿里链表面试题】算法题--链表易懂版讲解
【数据结构与算法】【腾讯阿里链表面试题】算法题--链表易懂版讲解
|
2月前
|
C语言
反转链表、链表的中间结点、合并两个有序链表【LeetCode刷题日志】
反转链表、链表的中间结点、合并两个有序链表【LeetCode刷题日志】
|
3月前
Leecode之合并两个有序链表
Leecode之合并两个有序链表
|
3月前
|
存储 算法
头歌【第2关:有序单链表中值相同的多余结点的删除操作】
头歌【第2关:有序单链表中值相同的多余结点的删除操作】
46 0