反转链表前n个节点
题目链接
来源:力扣(LeetCode)
链接:无
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目描述
题目分析
反转前n个节点的题目中,原链表的头节点反转后,它的next 要指向 第 n + 1 个节点。也就是说,第n个节点的反转需要特殊处理。
class Solution {
ListNode tail = null;//记录第n+1个节点
public ListNode reversePre(ListNode head, int n) {
if(n == 1){
tail = head.next;//把第n+1个节点赋给tail
return head;
}
ListNode last = reverseList(head.next, n - 1);//每进入一层递归,head = head.next,n--
//反转操作和206相同
head.next.next = head;
head.next = tail;//不影响中间节点的反转,但可以让头结点反转变为尾结点后置next域为tail,让反转部分插入原链表中
return last;
}
}