思路
出口:
1. l1 == null && l2 == null
2. 一个null 一个不为bull,但是还需要向下递归
每层:
判断哪一个更小,更小的放进新的数组
代码
递归实现
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
//result为
ListNode result = new ListNode();
ListNode resultCur=result;
public ListNode trainningPlan(ListNode l1, ListNode l2) {
//判断出口
if (l1 == null && l2 == null) {
return result.next;
}
if (l1==null&&l2!=null){
ListNode newNode = new ListNode(l2.val);
resultCur.next=newNode;
resultCur=resultCur.next;
l2=l2.next;
trainningPlan(l1,l2);
return result.next;
}
if (l2==null&&l1!=null){
ListNode newNode = new ListNode(l1.val);
resultCur.next=newNode;
resultCur=resultCur.next;
l1=l1.next;
trainningPlan(l1,l2);
return result.next;
}
//每一层正常判断
if (l1.val==l2.val){
ListNode newNode1 = new ListNode(l1.val);
resultCur.next=newNode1;
resultCur=resultCur.next;
l1=l1.next;
ListNode newNode2 = new ListNode(l2.val);
resultCur.next=newNode2;
resultCur=resultCur.next;
l2=l2.next;
//调用下层
trainningPlan(l1,l2);
return result.next;
} else if (l1.val < l2.val) {
ListNode newNode = new ListNode(l1.val);
resultCur.next=newNode;
resultCur=resultCur.next;
l1=l1.next;
trainningPlan(l1,l2);
return result.next;
}
else if (l2.val < l1.val){
ListNode newNode = new ListNode(l2.val);
resultCur.next=newNode;
resultCur=resultCur.next;
l2=l2.next;
trainningPlan(l1,l2);
return result.next;
}
return null;
}
}