题解 | #合并两个排序的链表#

合并两个排序的链表

https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337

逻辑思路如下:

·先判断特殊情况,如果一开始两条链表存在为空,则返回另一条的值。

·判断两条链表的初始值哪条最小,以初始值为最小值的链表 为phead1

·通过一个变量tmp记录phead1当前节点的前一个节点,方便后续连接phead2

·while循环,判断phead2是否为空,表示是比对完。逻辑就是用phead1当前的节点和phead2当前的节点比对

假如phead1当前的节点值 小于 phead2当前的节点值,phead1 往后移一个节点

假如 phead2当前的节点值 小于 phead1当前的节点值 , 把当前phead2当前的节点放在当前phead1当前的节点的前一节点。因此就需要用到变量tmp.

加入phead2未空,但phead1已空,证明phead2剩下的节点都比 phead1最后一个节点大,则把phead2 连接在 phead1最后一个节点后面。完成两个链表的合并

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param pHead1 ListNode类 
     * @param pHead2 ListNode类 
     * @return ListNode类
     */
    public ListNode Merge (ListNode pHead1, ListNode pHead2) {
	  //·先判断特殊情况,如果一开始两条链表存在为空,则返回另一条的值。
        if(pHead2 == null)
        {
            return pHead1;
        }
        if(pHead1 ==null)
        {
            return pHead2;
        } 
	  //判断两条链表的初始值哪条最小,以初始值为最小值的链表 为phead1
        if(pHead2.val<pHead1.val)
        {
            ListNode tmp  = pHead1;
            pHead1 = pHead2;
            pHead2 = tmp;
        }
	  
        ListNode head = pHead1;
        ListNode lastHeadOne = head;
        
        while(pHead2!=null)
        {
            if(pHead1==null)
            {
                lastHeadOne.next = pHead2;
                pHead2 = null;
                break;
            }
            if(pHead2.val<pHead1.val)
            {
                lastHeadOne.next =  pHead2;
                ListNode tmp = pHead2;
                pHead2 = pHead2.next;
                tmp.next =  pHead1;
                lastHeadOne = tmp;
            }
            else{
                lastHeadOne= pHead1;
                pHead1= pHead1.next;
            }
        }
        return head;
    }
}

全部评论

相关推荐

12-26 14:44
复旦大学 Java
点赞 评论 收藏
分享
12-19 19:39
青海大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务