剑指Offer:合并两个排序的链表【25】
题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
题目分析
每次都是比较箭头节点,把小节点连接到已经合并的链表之后,重复的执行此过程,最后如果那个链表已经走完,那就将另一个链表直接连接到合并的链表之后。
Java题解
常规解法
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode newList = new ListNode(0);
ListNode curNode = newList;
while(l1!=null&&l2!=null)
{
if(l1.val<l2.val)
{
curNode.next=l1;
l1=l1.next;
}
else{
curNode.next=l2;
l2=l2.next;
}
curNode=curNode.next;
}
if(l1==null)
curNode.next=l2;
if(l2==null)
curNode.next=l1;
return newList.next;
}
}
递归解法
public static ListNode Merge(ListNode list1,ListNode list2) {
if(list1==null)
return list2;
else if(list2==null)
return list1;
ListNode MergeHead = null;
if(list1.val<list2.val)
{
MergeHead = list1;
MergeHead.next = Merge(list1.next,list2);
}else
{
MergeHead = list2;
MergeHead.next = Merge(list1,list2.next);
}
return MergeHead;
}