06合并两个有序链表

合并两个有序链表

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

示例 1:

img

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

示例 2:

输入:l1 = [], l2 = []
输出:[]

示例 3:

输入:l1 = [], l2 = [0]
输出:[0]

提示:

  • 两个链表的节点数目范围是 [0, 50]
  • -100 <= Node.val <= 100
  • l1l2 均按 非递减顺序 排列
public class ListNode {
  int val;
  ListNode next;

  ListNode() {
  }

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

  ListNode(int val, ListNode next) {
    this.val = val;
    this.next = next;
  }
}
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
  if (list1 == null) {
    return list2;
  }
  if (list2 == null) {
    return list1;
  }

  ListNode p = new ListNode();
  ListNode head = p;
  ListNode p1 = list1;
  ListNode p2 = list2;

  while (p1!=null && p2!=null){
    if(p1.val>= p2.val){
      p.next = p2;
      p2 = p2.next;
      p = p.next;
    }else{
      p.next = p1;
      p1 = p1.next;
      p = p.next;
    }
  }
  if (p1!=null){
    p.next = p1;
  }

  if (p2!=null){
    p.next = p2;
  }
  return head.next;
}

06合并两个有序链表
https://jiajun.xyz/2026/02/07/算法/07链表/06合并两个有序链表/
作者
Lambda
发布于
2026年2月7日
许可协议