题目:
算法思想:
设置两个指针,一个快指针在前面,一个慢指针在后面,快指针提前走N步,然后两个指针同时走,这样的话,刚好快指针走到最后的时候,慢指针指向的是倒数第n个结点的前一个结点。
代码:
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode headNode = new ListNode(-1);
headNode.next = head;
ListNode firstNode = headNode; //快指针
ListNode secondNode = headNode; // 慢指针
for(int i = 0; i < n; i++) {
firstNode = firstNode.next;
}
while(firstNode.next != null) {
firstNode = firstNode.next;
secondNode = secondNode.next;
}
System.out.println(firstNode.val);
System.out.println(secondNode.val);
secondNode.next = secondNode.next.next;
return headNode.next;
}
}