思路:
1.定义一个引用front,从链表起始位置开始走,先走K步 注意考虑K大于节点时的情况
2.再定义一个引用slow,从链表起始位置开始走,让slow和front一起走,front走到null的时候,这是slow就是倒数第K个节点
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
//先走K步
ListNode fast = head;
while(0 != k){
//fast = null K比节点值大
if(fast == null){
return null;
}
fast = fast.next;
k--;
}
ListNode slow = head;
//fast还可以走的步数 等于 slow还可以走的步数 这时slow刚好为倒数第k个节点位置
while(fast != null){
fast = fast.next;
slow = slow.next;
}
return slow;
}
}
运行结果