解题思路:其实查找链表中倒数第k个结点,可以转化为顺数第几个结点。架设链表长度为n,那么我们会发现,顺数结点p+k = n+1;所以顺数结点p = n-k+1;这样的话,答案很容易就出来了。
public ListNode FindKthToTail(ListNode head, int k){
if(head == null)return null;
ListNode ret = head;//因为要遍历链表计算链表的长度,所以需要保存一下
int len = 0 ;
while(head != null){
len++;
head = head.next;
}
if(k>len)return null;
int p = len+1-K;
//因为此时ret指向了头指针的第一个结点,所以从1开始。
for(int i=0;i<p;i++){
ret = ret.next;
}
return ret;
}