合并两个有序链表(java)
题解
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode dummy = new ListNode(0);
ListNode current = dummy;
while(l1 != null && l2 != null){
if(l1.val < l2.val){
current.next = l1;
l1 = l1.next;
}else{
current.next = l2;
l2 = l2.next;
}
current = current.next;
}
current.next = l1==null ? l2 : l1;
return dummy.next;
}
}
图示
详解
- 1>.定义一个哑结点,并由current负责具体操作。
- 2>.遍历终止条件:(l1 || l2)指向的地址为null。
- 3>.其中 current.next 指向 l1,l2 中较小(等于)的值 l1(或l2),而后 current,l1(或l2) 顺移。
- 4>.current.next = l1==null ? l2 : l1;
【如果 l1 等于 null,current.next = l1,否则 current.next = l2】
分析
如果不移动 current ,结果:
难点
- 指针略多,易混乱。
声明
- 原作者: E.L.E
- <未经允许不得转载使用,欢迎大家评论>