题目描述

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
No.21 合并两个有序列表 (Easy) - 图1

思路

递归,比较两个结点的值,让值较小的结点指向剩下的两个链表所构成的升序链表。

代码

  1. public class Solution_21 {
  2. public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
  3. if (l1 == null) {
  4. return l2;
  5. }
  6. if (l2 == null) {
  7. return l1;
  8. }
  9. if (l1.val < l2.val) {
  10. l1.next = mergeTwoLists(l1.next, l2);
  11. } else {
  12. l2.next = mergeTwoLists(l1, l2.next);
  13. }
  14. return l1.val < l2.val ? l1 : l2;
  15. }
  16. }