力扣面试150题--删除链表的倒数第 N 个结点

Day 36

题目描述

力扣面试150题--删除链表的倒数第 N 个结点_第1张图片

思路

见代码。

/**
 * 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;
    }
}

你可能感兴趣的:(leetcode,面试,链表)