题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
解题思路
先在两个头结点中选择出一个较小的作为新链表的头结点,被选的节点指向下一个节点。新头结点的下一个节点就是再次比较两个排序链表的头结点的大小,可以用递归。
注意当输入为空链表的情况,输出的结果就是另一个链表。
代码实现
/*
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;
}
else if(list2 == null) {
return list1;
}
ListNode newHead = null;
if(list1.val < list2.val) {
newHead = list1;
list1 = list1.next;
newHead.next = Merge(list1, list2);
}
else {
newHead = list2;
list2 = list2.next;
newHead.next = Merge(list1, list2);
}
return newHead;
}
}