public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
//思路:定义两个指针,front,rear,先让front走k步,再让rear开始走,和front同时遍历,最后front所在位置就是倒数第k个节点的位置
if(head == null || k < 0) return null;
ListNode front = head;
ListNode rear = head;
while(front != null && k > 0 ){//当front不为空且k>0时,要确保链表长度大于k
k--;
front = front.next;//让front先走k步
}
while(front != null){//front和rear同时走
front = front.next;
rear = rear.next;
}
return k > 0 ? null : rear;//当k>0时,返回null,否则返回rear
}
}
本题思路:定义两个指针,一个指针先走k步,另一个指针跟在后面,使用前后指针的方式,当前面指针到达结尾,后面的指针就是倒数第k个节点。