Leetcode链表系列(java):19 删除链表的倒数第 N 个结点(新手小白仅供参考)
题目来源
题目描述
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
个人思路
设置两个p1、p2指针,使他们之间想个n-1个节点,然后遍历,使p2最后一个节点,然后删除p1后一个节点即可。
代码
/**
* 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 p = new ListNode(0);
ListNode p1 = p;
ListNode p2 = p;
p.next = head;
for(int i =0;i<n;i++){
p2 = p2.next;
}
while(p2.next != null){
p1 = p1.next;
p2 = p2.next;
}
p1.next = p1.next.next;
return p.next;
}
}