输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
*思路:假设两个链表的当前结点为n1(list1),n2(list2)比较链表结点值的大小,如果n1.val<=n2.val,则合并后的链表应该为 n1->Merge(n1.next, n2). 反之,如果n1.val>n2.val, 则合并后的结果应该为n2->Merge(n1, n2.next). 所以递归实现的代码如下:
1 /* 2 public class ListNode { 3 int val; 4 ListNode next = null; 5 6 ListNode(int val) { 7 this.val = val; 8 } 9 }*/ 10 public class Solution { 11 public ListNode Merge(ListNode list1,ListNode list2) { 12 if(list1 == null){ 13 return list2; 14 } 15 if(list2 == null){ 16 return list1; 17 } 18 if(list1.val <= list2.val){ 19 list1.next = Merge(list1.next, list2); 20 return list1; 21 }else{ 22 list2.next = Merge(list1, list2.next); 23 return list2; 24 } 25 } 26 }