算法1
双指针分别遍历
用两个指针分别遍历两个链表
注意点:
1、两个链表的如果其中一个为空如何处理,即增加代码健壮性
2、创建两个指针,一个指向头节点,一个用来建立链表
3、如果其中一个链表遍历结束,那么直接将另一个链表接到尾部即可
Java 代码
class Solution {
public ListNode merge(ListNode l1, ListNode l2) {
if(l1==null&&l2==null)
return null;
else if(l1==null)
return l2;
else if(l2==null)
return l1;
ListNode node1 = l1;
ListNode node2 = l2;
ListNode node = null;
if(node1.val>node2.val){
node = node2;
node2 = node2.next;
}else{
node = node1;
node1=node1.next;
}
ListNode res = node;
while(node1!=null&&node2!=null){
if(node1.val>node2.val){
node.next = node2;
node = node.next;
node2 = node2.next;
}else{
node.next = node1;
node = node.next;
node1 = node1.next;
}
}
while(node1!=null){
node.next = node1;
node = node.next;
node1 = node1.next;
}
while(node2!=null){
node.next = node2;
node = node.next;
node2 = node2.next;
}
return res;
}
}