题目

输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
示例1:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
限制:
0 <= 链表长度 <= 1000

解题思路

1、双指针遍历

image.png
image.png

实现

1、双指针遍历

  1. class Solution {
  2. public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
  3. // 初始化参数,生成一个伪节点,让其充当链表头
  4. ListNode result = new ListNode(-1);
  5. // 游标
  6. ListNode course = result;
  7. // l1 l2 都为非空
  8. while (l1 != null && l2 != null) {
  9. if (l1.val < l2.val) {
  10. course.next = l1;
  11. l1 = l1.next;
  12. } else {
  13. course.next = l2;
  14. l2 = l2.next;
  15. }
  16. course = course.next;
  17. }
  18. if (l1 == null) {
  19. // l1 为空
  20. course.next = l2;
  21. } else if (l2 == null) {
  22. // l2 为空
  23. course.next = l1;
  24. }
  25. return result.next;
  26. }
  27. }

image.png