/**
* 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) {
/*
通过一个指针p先走n-1步之后,另一个指针q从头开始走,那么当p移动到链表尾部时,q就会位于链表的倒数第n个节点。
*/
ListNode p = head;
for(int i = 0;i < n-1;i ++)
p = p.next;
ListNode q = head,pre = null;
while(p != null && p.next != null){
p = p.next;
pre = q;
q = q.next;
}
//pre为null,就说明当前p指针已经在链表尾了,要删除的是链表头部节点
if(pre == null)
head = head.next;
else
pre.next = q.next;
return head;
}
}
【链表】Leetcode 19. 删除链表的倒数第 N 个结点【中等】
2024-04-02 22:36:05 14 阅读