以下是一个可能的实现:

public class ListNode {
    int val;
    ListNode next;

    ListNode(int val) {
        this.val = val;
    }
}

public class Solution {
    public ListNode findNthFromEnd(ListNode head, int n) {
        ListNode dummy = new ListNode(0);
        dummy.next = head;
        ListNode fast = dummy;
        ListNode slow = dummy;

        // 将fast指针向前移动n个节点
        for (int i = 0; i <= n; i++) {
            fast = fast.next;
        }

        // 同时移动fast和slow指针,直到fast指针到达链表尾部
        while (fast != null) {
            fast = fast.next;
            slow = slow.next;
        }

        return slow;
    }
}

使用dummy节点创建一个虚拟的头节点,这样可以处理头节点的特殊情况。然后使用两个指针fast和slow,首先将fast指针向前移动n个节点,然后同时移动fast和slow指针,直到fast指针到达链表尾部。此时slow指针指向倒数第N个节点,返回slow指针即可。

给定一个单链表输出倒数第N个元素请用Java实现

原文地址: http://www.cveoy.top/t/topic/i6Az 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录