题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 地址:牛客链接
解决方法
关于链表调整的两大方向,见反转链表 本题目解法有二:
直接链表调整(循环),和合并两个有序数组差不多思想 递归调整
代码实现:
/*
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;
}
ListNode mergeList = null ;
if (list1.val <= list2.val ) {
mergeList = list1;
list1 = list1.next;
}else {
mergeList = list2;
list2 = list2.next;
}
ListNode curNode = mergeList;
while (list1 != null && list2 != null ) {
if (list1.val <= list2.val ) {
curNode.next = list1;
list1 = list1.next;
}else {
curNode.next = list2;
list2 = list2.next;
}
curNode = curNode.next;
}
if (list1 != null ) {
preNode.next = list1;
}
if (list2 != null ) {
preNode.next = list2;
}
return mergeList;
}*/
public ListNode Merge(ListNode list1,ListNode list2) {
if (list1 == null ) {
return list2;
}
if (list2 == null ) {
return list1;
}
ListNode mergeList = null ;
if (list1.val <= list2.val ) {
mergeList = list1;
list1 = list1.next;
}else {
mergeList = list2;
list2 = list2.next;
}
mergeList.next = Merge(list1,list2);
return mergeList;
}
}