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

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务