删除链表的倒数第N个节点的方法
我们先来看要求和示例:
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头节点。
示例:
输入:1->2->3->4->5,n = 2
输出:1->2->3->5
解题思路:
双指针法,定义一个指针 fast 先向右移动 n 个节点,然后再定义一个指针 slow ,两个指针同时向右移动,直到 fast 指向链表的尾节点。此时 slow 指向的节点就是要删除的节点的前一个节点,将其指向下下个节点即可。
public ListNode removeNthFromEnd(ListNode head, int n) {ListNode dummy = new ListNode(0, head);int length = getLength(head);ListNode cur = dummy;for (int i = 1; i < length - n + 1; ++i) {cur = cur.next;}cur.next = cur.next.next;ListNode ans = dummy.next;return ans;}public int getLength(ListNode head) {int length = 0;while (head != null) {++length;head = head.next;}return length;}
好了,今天的文章分享就到这里了,希望对大家的学习有帮助哦!