SQL题解 | #合并两个排序的链表#
合并两个排序的链表
https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337
【基本思路】
返回特殊情况(全为null 或者 有一个为null) →
创建一个新链表,并先设置好头节点,然后再创建一个新节点用于保存这个新链表的头节点 →
while(两个链表都不为空) 则依次对比赋值 →
if(有其中一个链表为空) 则直接把整个链表接到尾巴即可(因为题目已经说了是有序链表)→
return 保存的新链表头节点
==============================
【参考答案】
import java.util.*; public class Solution { public ListNode Merge (ListNode pHead1, ListNode pHead2) { // 处理特殊情况 if(pHead1==null && pHead2==null){ return pHead1; }else if(pHead1==null && pHead2!=null){ return pHead2; }else if(pHead1!=null && pHead2==null){ return pHead1; } // 创建新链表的头节点 ListNode newList; // 将第一个头节点赋值给新链表的头节点 if(pHead1.val <= pHead2.val){ newList = pHead1; pHead1 = pHead1.next; }else{ newList = pHead2; pHead2 = pHead2.next; } ListNode newList_head = newList; // 处理两个链表都不为空的情况 while(pHead1!=null && pHead2!=null){ if(pHead1.val <= pHead2.val){ newList.next = pHead1; newList = newList.next; pHead1 = pHead1.next; }else{ newList.next = pHead2; newList = newList.next; pHead2 = pHead2.next; } } // List1不为空,List2为空 if(pHead1!=null && pHead2==null){ newList.next = pHead1; } // List2不为空,List1为空 if(pHead2!=null && pHead1==null){ newList.next = pHead2; } return newList_head; } }