定义指针p1,让p1走k步:
定义指针p2,在p1走了k步的时候,p2也跟着走。
p1走到最后的时候走了n-k步,停留在最后的null结点。
P2从头结点开始,也跟着走到了n-k步,而n-k恰好是倒数第k个节点。
例子:
实现:
// 返回链表的倒数第 k 个节点
static ListNode findFromEnd(ListNode head, int k) {
ListNode p1 = head,//第一个指针
p2 = head;//第二个指针
for (int i = 0; i < k; i++) {
p1 = p1.next;
}
while (p1 != null){
p1 = p1.next;
p2 = p2.next;
}
return p2;
}
参考
labuladong