题解 | #合并两个排序的链表#
合并两个排序的链表
https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337
public ListNode Merge(ListNode list1,ListNode list2) { //结果集 ListNode head = null; ListNode result = null; //节点校验 if(list1 == null && list2 == null) return null; if(list2 == null){ return list1; }else if(list1 == null){ return list2; } //取两个链表的第一元素 while(list1 != null || list2 != null){ if(head == null){ //第一次循环 if(list1.val >= list2.val){ head = list2; list2 = list2.next; }else{ head = list1; list1 = list1.next; } result = head; continue; } //当list1为空时 if(list1 == null){ head.next = list2; list2 = list2.next; head = head.next; continue; } //当list2为空时 if(list2 == null){ head.next = list1; list1 = list1.next; head = head.next; continue; } //当两者都不为空时 if(list1.val >= list2.val){ head.next = list2; list2 = list2.next; }else{ head.next = list1; list1 = list1.next; } head = head.next; } return result; }
分多钟情况进行判断
1、两个链表都为空
2、两个链表一个空一个不空
3、两个链表连都不为空
前两种情况都相对来说比较简单,针对第三种情况又可以进行详细分析
1、第一次进入循环时保留结果值
2、当两个链表都还有数值时的如何操作
3、当两个链表中的任意一个为空的如何操作