题解 | #合并两个排序的链表#
合并两个排序的链表
https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337
/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution { public ListNode Merge(ListNode list1,ListNode list2) { ListNode dummy = new ListNode(0);//设定的头结点,最后return 它的下一个节点 ListNode temp = new ListNode(1);//类似一个监管者,只改变链表的指向,不保存值 // 假如有一个链表是空,那就return剩下那个,假如另一个也是空的return null if(list1==null){ return list2; }else if(list2==null){ return list1; } //比较两个链表第一个节点的值来初始化dummy,dummy保留,temp参与后续操作 if(list1.val<list2.val){ dummy.next = list1; list1 = list1.next; temp = dummy.next; } else if(list1.val>=list2.val){ dummy.next = list2; list2 = list2.next; temp = dummy.next; } //只要链表还没空就要继续 while(temp.next!=null||list1!=null|list2!=null){ //同上 if(list1==null){ temp.next=list2; return dummy.next; }else if(list2==null){ temp.next= list1; return dummy.next; } if(list1.val<list2.val){ temp.next = list1; list1 = list1.next; temp = temp.next; } else if(list1.val>=list2.val){ temp.next = list2; list2 = list2.next; temp = temp.next; } } return dummy.next; } }