【剑指offer】合并有序链表

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

*思路:假设两个链表的当前结点为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 }

猜你喜欢

转载自www.cnblogs.com/singular/p/10037187.html