题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
思路:假设 链表1:1->3->5->7
链表2:2->4->6->8
链表3:1->2->3->4->5->6->7->8
我们可以先比较两个链表的头结点,发现链表1的结点值1小于链表2的结点值2,那么合并后的结点头结点就是链表1的头结点1,接着比较链表1的第二个结点3和链表2的头结点2,发现2<3,那么就把链表2的头结点合并为1->2,依次递归实现后面的结点。
我们还有考虑到空链表的问题,如果链表1是空链表,那么返回的应该是链表2,;如果链表2是空链表,返回的是链表1,;如果两个链表都是空,则返回空。
代码如下:
public class Solution { public ListNode Merge(ListNode list1,ListNode list2) { if(list1==null) return list2; if(list2==null) return list1; if(list1==null&&list2==null) return null; ListNode pMergeHead=null; if(list1.val<list2.val){ pMergeHead=list1; pMergeHead.next=Merge(list1.next,list2); }else{ pMergeHead=list2; pMergeHead.next=Merge(list1,list2.next); } return pMergeHead; } }