力扣面试150题--删除链表的倒数第 N 个结点
Day 36
题目描述
思路
见代码。
/*** 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 fake=new ListNode();//头结点fake.next=head;ListNode fakehead=fake;//指向x的前一个节点ListNode x=head;//指向倒数第n个元素ListNode y=head;//与x相隔n个元素int i=1;while(i!=n){y=y.next;i++;}while(y.next!=null){//当y到最后一个元素时,x就指向了倒数第n个元素x=x.next;y=y.next;fakehead=fakehead.next;}fakehead.next=x.next;//正常删除return fake.next;}
}