思路:
对于编程,思路要比编程难,所以先把思路搞清楚,就能往下做题
第一步: 先计算链表的长度,如果k的值大于链表的长度,直接返回 null;
第二步: 比如说链表里面有5个元素,返回倒数后两个,那么意思是不是前三个不用返回,找到第四个的头结点返回即可;
所以,加一个变量 current ,记录当前走到哪一个节点,如果走到 总长度-k, 是不是就可以返回了;
代码如下:
public ListNode FindKthToTail (ListNode pHead, int k) {
// write code here
ListNode first=pHead;
int count=0;
// 计算总长度
while(pHead!=null){
count++;
pHead=pHead.next;
}
if(k>count){
return null;
}
// 用于记录当前走到哪一步
int current=0;
pHead=first;
while(pHead!=null){
// 总长- k 等于 当前要返回的节点的时候
if(count-k==current){
return pHead;
}
pHead=pHead.next;
current++;
}
return null;
}