关键词:有序。
1.创建一个新链表用来存储合并后的链表。
2.设置两个指针,依次从两个链表的头部开始遍历,比较两指针所指向的节点的数值大小,将小的数值放在创建好的新链表中。
3.哪个指针的数值被放到了新链表中,哪个指针向后移动,另一个指针不动。
4.更新后的指针继续进行比较并持续更新。
5.假如有一方的数值已经被遍历完了,则将另一方的数组依次放进新链表中,数值之间的相对位置不变。
class Solution14_ {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode prehead = new ListNode(-1);
ListNode prev = prehead;
while (l1 != null && l2 != null) {
if (l1.val <= l2.val) {
prev.next = l1;
l1 = l1.next;
} else {
prev.next = l2;
l2 = l2.next;
}
prev = prev.next;
}
// 合并后 l1 和 l2 最多只有一个还未被合并完,我们直接将链表末尾指向未合并完的链表即可
prev.next = l1 == null ? l2 : l1;
return prehead.next;
}
}