【刷题笔记——链表专栏】牛客网:合并两个排序链表
一、题目描述
二、思路分析
1、创建新的头节点newHead(注意这一步)
2、循环遍历pHead1和pHead2并进行链表并进行合并,直到pHead1和pHead2其中有一个为null时结束循环
3、合并完成后,pHead1和pHead2谁还有剩余,将其链接到p之后
4、最后返回newHead.next
代码实现如下
public ListNode Merge(ListNode pHead1, ListNode pHead2) {
//1、创建新的头节点newHead
ListNode newHead = new ListNode(-1);
//创建p节点指向newHead用于在链表循环时遍历移动,而newHead作为新的头节点则不动
ListNode p = newHead;
//2、循环遍历pHead1和pHead2并进行链表并进行合并,直到pHead1和pHead2其中有一个为null时结束循环
while (pHead1 != null && pHead2 != null) {
if (pHead1.val < pHead2.val) {
p.next = pHead1;
pHead1 = pHead1.next;
} else {
p.next = pHead2;
pHead2 = pHead2.next;
}
p = p.next;
}
//3、合并完成后,pHead1和pHead2谁还有剩余,将其链接到p之后
p.next = pHead1 != null? pHead1 : pHead2;
//4、最后返回newHead.next
return newHead.next;
}