🚩传送门:牛客题目

题目

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

示例 1:

输入:{1,3,5},{2,4,6} 返回值:{1,2,3,4,5,6}

解题思路:二路归并

双指针二路归并,由于合并过程中头结点和其他结点操作不一样,因此为了统一操作先给新头指针一个头节点

我的代码

  1. public class Solution {
  2. public ListNode Merge(ListNode list1,ListNode list2) {
  3. ListNode list1Head=list1;
  4. ListNode list2Head=list2;
  5. //1.为了简便操作,new 出一个头节点
  6. ListNode NewHead=new ListNode(-1);
  7. ListNode NewTail=NewHead;
  8. //2.双指针非空,比较插入
  9. while(list1Head!=null&&list2Head!=null){
  10. if(list1Head.val<list2Head.val){
  11. NewTail.next=list1Head;
  12. list1Head=list1Head.next;
  13. }
  14. else{
  15. NewTail.next=list2Head;
  16. list2Head=list2Head.next;
  17. }
  18. NewTail=NewTail.next;
  19. }
  20. //3.2链表空了,直接将剩余1链表插入即可
  21. if(list1Head!=null){
  22. NewTail.next=list1Head;
  23. }
  24. //4.1链表空了,直接将剩余2链表插入即可
  25. if(list2Head!=null){
  26. NewTail.next=list2Head;
  27. }
  28. //5.抛弃多余的头节点
  29. NewHead=NewHead.next;
  30. return NewHead;
  31. }
  32. }