-
2.10
- 难点 1:因为处理删除头结点的情况,所以需要哨兵节点
- while 里是 fast。next
-
1.24
- 这里之所以需要哨兵节点是因为如何删除的是第一个节点,那完大蛋
-
1.20
- 第二遍做的时候,以为是倍数快慢指针走,后来知道是现在 n 步,再一起走到null 的前一个的尾节点
- 需要哨兵节点
-
11.9
- 需要加哨兵节点,不然当只有一个节点时不好处理
- fast先走n步,然后同时走,走到尾节点(null的前一个),slow就是n的前一个,可用n为1举例下图

class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode dummy = new ListNode(0);
dummy.next= head;
ListNode slow = dummy;
ListNode fast = dummy;
for(int i=0;i<n;i++){// 因为加了一个节点,但不用n+1因为这里加不加头节点没关系
fast = fast.next;
}
while(fast.next!=null){//这里和上面走n步一起达成目标
fast = fast.next;
slow = slow.next;
}
slow.next = slow.next.next;
return dummy.next;
}
}