题解 | #删除链表的倒数第n个节点#
删除链表的倒数第n个节点
https://www.nowcoder.com/practice/f95dcdafbde44b22a6d741baf71653f6
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * } */ public class Solution { /** * * @param head ListNode类 * @param n int整型 * @return ListNode类 */ public ListNode removeNthFromEnd (ListNode head, int n) { //虚拟表头 ListNode res = new ListNode(-1); res.next = head; //当前节点 ListNode cur = head; //前序节点 ListNode pre = res; //计算链表长度 int length = 0; while (cur != null) { cur = cur.next; length++; } //这里的cur已经为null, 需要重置 cur = head; if (n <= length) { int index = length - n; for (int i = 0; i < index; i++) { pre = cur; cur = cur.next; } //得到index位的节点,跳过下一个节点(删除cur节点) pre.next = cur.next; return res.next; } return null; } }
涉及到删除节点:
需引入:cur 和 pre
利用 pre.next = cur.next;