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

合并两个排序的链表

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

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
//   pre指针指向的是合并之后链表的最后一个元素的位置,
//   每进行一次比较操作确定一个元素的最终位置。
//   本题有三个指针:l1与l2仅用于定位,pre指针用于确定该轮对比之后选定的元素
public class Solution {
    public ListNode Merge(ListNode list1,ListNode list2) {
        ListNode dummy = new ListNode(-1);
        ListNode pre =dummy; // 创建一个虚拟节点来保留最终返回列表的头结点位置
        ListNode l1=list1;
        ListNode l2=list2;
        while(l1!=null && l2!=null){
            if(l1.val<=l2.val){
                pre.next=l1;
                l1=l1.next;
            }else{
                pre.next=l2;
                l2=l2.next;
            }

            pre=pre.next; // 统一操作pre
        }
	  	// 串上剩余节点
        if(l1!=null) {
            pre.next=l1;
        }
        if(l2!=null) {
            pre.next=l2;
        }
        return dummy.next;
    }
}

全部评论

相关推荐

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