import java.util.*;

经典双链表,设置一个哨兵,让它先走K-1步(这样就包含了K个结点,走几步是间距,注意)
然后同时移动双指针(头节点和哨兵),直到哨兵的下一个节点为空,返回头节点就可以了。

public class Solution {
    public ListNode FindKthToTail (ListNode pHead, int k) {
        ListNode guard = pHead;//定义哨兵指针
        if(pHead == null || k == 0)return null;//极端情况,返回空
        while(k > 1){
            guard = guard.next;
            if(guard == null)return null;//如果哨兵没走完就为空了,说明长度不够
            k--;//让哨兵先走K-1步,因为走几步是间距,应该减1
        }
        while(guard.next != null){
            pHead = pHead.next;
            guard = guard.next;
        }
        return pHead;
    }
}