一、题目
二、题解
链表给了头节点,可以通过遍历链表的方式进行删除。想要删除指定节点,只需要找到其前一个节点,并让前一个节点指向待删除节点的后一个节点即可。
三、代码
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode dummy = new ListNode(0, head);
int cnt = 0;
ListNode cur = head;
// 统计链表节点总个数
while (cur != null) {
cnt++;
cur = cur.next;
}
// 寻找待删除节点的前一个节点
ListNode pre = dummy;
for (int i = 0; i < cnt - n; i++) {
pre = pre.next;
}
// 删除
pre.next = pre.next.next;
return dummy.next;
}
}