25. 合并两个排序的链表

NowCoder

题目描述

25. 合并两个排序的链表 - 图1

解题思路

递归

  1. public ListNode Merge(ListNode list1, ListNode list2) {
  2. if (list1 == null)
  3. return list2;
  4. if (list2 == null)
  5. return list1;
  6. if (list1.val <= list2.val) {
  7. list1.next = Merge(list1.next, list2);
  8. return list1;
  9. } else {
  10. list2.next = Merge(list1, list2.next);
  11. return list2;
  12. }
  13. }

迭代

  1. public ListNode Merge(ListNode list1, ListNode list2) {
  2. ListNode head = new ListNode(-1);
  3. ListNode cur = head;
  4. while (list1 != null && list2 != null) {
  5. if (list1.val <= list2.val) {
  6. cur.next = list1;
  7. list1 = list1.next;
  8. } else {
  9. cur.next = list2;
  10. list2 = list2.next;
  11. }
  12. cur = cur.next;
  13. }
  14. if (list1 != null)
  15. cur.next = list1;
  16. if (list2 != null)
  17. cur.next = list2;
  18. return head.next;
  19. }

25. 合并两个排序的链表 - 图2