问题描述:
给一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
思路分析:
提示:双指针
1.先让快指针跑n个节点
2.判断是否跑完(为空)
3.若非;快慢一起跑,直到快为空
4.此时,慢指针指着倒数第n个节点的前一个节点
5.快慢初始指针的位置要,正确
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode dummy = new ListNode(0, head);
ListNode first = head;
ListNode second = dummy;
for (int i = 0; i < n; ++i) {
first = first.next; }
while (first != null) {
first = first.next;
second = second.next; }
second.next = second.next.next;
ListNode ans = dummy.next;
return ans; }
}
结果分析:
删掉倒数第n个节点,即让下一位代替倒数第n位置
当需要精确到某一个位置的时候,第一要想起双指针,第二数字必须精确