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;
}
}