合并两个有序链表
即将两个有序链表合并为一个新的有序链表并返回。
public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
val = x;
}
* }
我们需要做得是创建一个新链表将原来的两个链表连接起来。怎么连接呢?原来的两个链表逐个比较,val小的先连接,在继续比较,若有一条链表为空,则将另一条链表连接到新的链表,最后返回新链表的头结点。
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1 == null){
return l2;
}
if(l2 == null){
return l1;
}
ListNode nHead = null;//新链表的头结点
ListNode current = null;//连接原链表的结点
while(l1 != null && l2 != null){
if(l1.val <= l2.val){
if(nHead == null){
nHead = l1;
current = l1;
}else{
current.next = l1;
current = current.next;
}
l1 = l1.next;//遍历l1链表
}else{
if(nHead == null){
nHead = l2;
current = l2;
}else{
current.next = l2;
current = current.next;
}
l2 = l2.next;
}
}
if(l1 == null){
current.next = l2;
}else{
current.next = l1;
}
return nHead;
}