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

示例 1:
合并两个有序列表 - 图1

思路: 1.首先判断两个节点是否为空,如果一个为空,则返回另一个节点

  1. if(l1 == null) {
  2. return l1;
  3. }else if(l2 == null) {
  4. return l1
  5. }

2.比较两个节点的大小,如果一个较小,则将其取出,将他的指向,改为其他节点

  1. else if(l1.val < l2.val) {
  2. l1.next = mergeTwoLsts(l1.next, l2);
  3. return l1;
  4. }else {
  5. l2.next = mergeTwoLsts(l1, l2.next);
  6. return l2;
  7. }

总结

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