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;
}
}

