递归魔法
LeetCode 206 反转链表 2023.12.26
题目链接 labuladong讲解[链接]
ListNode* reverseList ( ListNode* head) {
if ( head == NULL || head-> next == NULL )
return head;
ListNode* last = reverseList ( head-> next) ;
head-> next-> next = head;
head-> next = NULL ;
return last;
}
LeetCode 92 反转链表-ii 2023.12.26
题目链接 labuladong讲解[链接]
class Solution {
public :
ListNode* reverseBetween ( ListNode* head, int left, int right) {
if ( left == 1 )
return reverseN ( head, right) ;
head-> next = reverseBetween ( head-> next, left- 1 , right- 1 ) ;
return head;
}
ListNode* successor = NULL ;
ListNode* reverseN ( ListNode* head, int right)
{
if ( right == 1 )
{
successor = head-> next;
return head;
}
ListNode* last = reverseN ( head-> next, right- 1 ) ;
head-> next-> next = head;
head-> next = successor;
return last;
}
} ;