源题目

https://leetcode-cn.com/problems/merge-two-sorted-lists/

21. 合并两个有序链表

难度简单1856
递归 / 回溯--LeetCode 21. 合并两个有序链表 - 图1
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例 1:
输入: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
  • l1 和 l2 均按 非递减顺序 排列

通过次数666,727
提交次数1,001,150

  1. /**
  2. * Definition for a singly-linked list.
  3. * class ListNode {
  4. * public $val = 0;
  5. * public $next = null;
  6. * function __construct($val = 0, $next = null) {
  7. * $this->val = $val;
  8. * $this->next = $next;
  9. * }
  10. * }
  11. */
  12. class Solution {
  13. /**
  14. * @param ListNode $l1
  15. * @param ListNode $l2
  16. * @return ListNode
  17. */
  18. function mergeTwoLists($l1, $l2) {
  19. if($l1 == null) return $l2;
  20. if($l2 == null) return $l1;
  21. if($l1->val < $l2->val){
  22. $l1->next = $this->mergeTwoLists($l1->next, $l2);
  23. return $l1;
  24. }else{
  25. $l2->next = $this->mergeTwoLists($l1, $l2->next);
  26. return $l2;
  27. }
  28. }
  29. }