1.本题知识点
链表,递归
2. 题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
3. 思路
① 判空;
② 对于2个升序链表,直接比较head的大小,将小的节点比如node1输出到新链表中,然后递归进行merge(node1.next, node2)即可。
Java版本:
/*
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 mergeNode = null;
if(list1.val < list2.val){
mergeNode = list1;
//最小节点的next指向剩余节点中最小的节点
mergeNode.next = Merge(list1.next,list2);//返回较小节点
}
else{
mergeNode = list2;
//最小节点的next指向剩余节点中最小的节点
mergeNode.next = Merge(list1,list2.next);//返回较小节点
}
//返回较小节点
return mergeNode;
}
}