题解 | #合并两个排序的链表#
合并两个排序的链表
https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337
/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ // pre指针指向的是合并之后链表的最后一个元素的位置, // 每进行一次比较操作确定一个元素的最终位置。 // 本题有三个指针:l1与l2仅用于定位,pre指针用于确定该轮对比之后选定的元素 public class Solution { public ListNode Merge(ListNode list1,ListNode list2) { ListNode dummy = new ListNode(-1); ListNode pre =dummy; // 创建一个虚拟节点来保留最终返回列表的头结点位置 ListNode l1=list1; ListNode l2=list2; while(l1!=null && l2!=null){ if(l1.val<=l2.val){ pre.next=l1; l1=l1.next; }else{ pre.next=l2; l2=l2.next; } pre=pre.next; // 统一操作pre } // 串上剩余节点 if(l1!=null) { pre.next=l1; } if(l2!=null) { pre.next=l2; } return dummy.next; } }