题解 | #合并两个排序的链表#
合并两个排序的链表
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;
}
}
查看25道真题和解析


CVTE公司福利 672人发布