解法1:快慢指针
① 设链表长度为n,定义两个指针a、b都指向头结点,当a指针指向最后一个结点时,a的下标是n-1
② 倒数第k个结点的下标是n-k,两者相差k-1个距离。所以让a指针先遍历向前走k-1步,此时a与b也相差k-1了,符合。
③ 然后让它们一起向前走即可。

public class Solution {
    public ListNode FindKthToTail(ListNode head,int k) {
        if(head==null || k<1){
            return null;
        }
        ListNode fast=head,slow=head;

        for (int i = 0; i < k - 1; i++){
            if(fast.next!=null){
                fast=fast.next;
            }
            else
                return null;
        }

        while(fast.next!=null){
            fast=fast.next;
            slow=slow.next;
        }
        return slow;
    }
}

解法2:普通解法
很显然,求倒数第k个,可以转换成求正数第多少个呢?