第十天两个简单递归,第一题
class Solution {
//每次输入两个节点,对比大小,并且选择下一个next节点,进行递归
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1 == null){
return l2;
}else if(l2 == null){
return l1;
}else if (l1.val < l2.val){
l1.next=mergeTwoLists( l1.next, l2);
return l1;
}else{
l2.next=mergeTwoLists( l1, l2.next);
return l2;
}
}
}
第二题反转链表
利用两个指针每一次实现局部反转,再一起往右移动,一直递归到最后
class Solution {
public ListNode reverseList(ListNode head) {
//prev 左指针
ListNode prev = null;
//curr右指针,从head开始
ListNode curr = head;
while (curr != null) {
//中介节点next 为curr未反转前的next节点
ListNode next = curr.next;
//翻转局部next
curr.next = prev;
//两个指针一起右移
prev = curr;
curr = next;
}
return prev;
}
}