【剑指offer】合并有序链表

时间:2024-04-26 18:08:04

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

*思路:假设两个链表的当前结点为n1(list1),n2(list2)比较链表结点值的大小,如果n1.val<=n2.val,则合并后的链表应该为 n1->Merge(n1.next, n2). 反之,如果n1.val>n2.val, 则合并后的结果应该为n2->Merge(n1, n2.next). 所以递归实现的代码如下:

 /*
public class ListNode {
int val;
ListNode next = null; ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
if(list1 == null){
return list2;
}
if(list2 == null){
return list1;
}
if(list1.val <= list2.val){
list1.next = Merge(list1.next, list2);
return list1;
}else{
list2.next = Merge(list1, list2.next);
return list2;
}
}
}