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

合并两个排序的链表

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

import java.util.*;

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

public class Solution {

    public ListNode Merge (ListNode pHead1, ListNode pHead2) {
        // write code here
        ListNode dummy = new ListNode(0);
        ListNode head = dummy;
        ListNode cur=head;
        if(pHead1==null){
            return pHead2;
        }
        if(pHead2==null){
            return pHead1;
        }
       while(pHead1!=null&&pHead2!=null){
        if(pHead1.val<pHead2.val){
            cur=pHead1;pHead1=pHead1.next;
        }else{cur=pHead2;pHead2=pHead2.next;}
        head.next=cur;
        head=head.next;
        cur=cur.next;  
           }
            if(pHead1==null){
            cur=pHead2;
             head.next=cur;
        }
            if(pHead2==null){
            cur=pHead1;
             head.next=cur;
        }
        return dummy.next;
    }
}

其实这题思路还是比较清晰的,比较两个链表的值,小的就放入新链表。但是要注意一个链表已经遍历完,一个链表还剩一个元素的情况;第二点就是返回值不是head,一定要提前创建一个不变的点,将其指向开头。ListNode dummy = new ListNode(0);

ListNode head = dummy;这样是让head存在,但是不为null,否则用head.null会报错;当然了,也可以不固定开头的前一个元素,固定开头也是可行的,例如:ListNode head =new ListNode(0);

        ListNode dummy = head;

全部评论

相关推荐

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