19、删除链表中的倒数第N个节点
具体实现:
1、定义虚拟节点
2、定义fast,slow指针,初始指向虚拟头结点
3、让slow和fast相隔n个节点
也就是让fast先走n+1步
4、让slow和fast同时移动,直到fast指向null
此时slow就指向要删除的节点的前一个节点
5、进行删除操作
代码:
class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { ListNode dummyNode = new ListNode(0); dummyNode.next = head; ListNode slow = dummyNode; ListNode fast = dummyNode; for(int i = 0; i < n+1 && fast != null; i++){ fast = fast.next; } while(fast != null){ slow = slow.next; fast = fast.next; } slow.next = slow.next.next; return dummyNode.next; }