给定一个单链表输出倒数第N个元素请用Java实现
以下是一个可能的实现:
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指针即可。
原文地址: http://www.cveoy.top/t/topic/i6Az 著作权归作者所有。请勿转载和采集!