反转链表
删除链表的倒数第N个结点
https://leetcode.cn/problems/remove-nth-node-from-end-of-list/description/
两次遍历(我的解决方案)
1 | var removeNthFromEnd = function(head, n) { |
只使用一次遍历
首先使用虚拟结点,方便处理实际的头结点逻辑,也就是说包括头结点在内的所有结点,处理逻辑是一致的。
定义快慢指针,fast和slow
fast比slow先走n+1步,这样当fast走到最后节点的下一个结点null的时候,slow正好指向将被删除结点的上一个结点。
fast和slow同时移动指向末尾
删除slow指向的下一个结点
1 | var removeNthFromEnd = function(head, n) { |