题解 | #链表中倒数最后k个结点#
链表中倒数最后k个结点
https://www.nowcoder.com/practice/886370fe658f41b498d40fb34ae76ff9
struct ListNode* FindKthToTail(struct ListNode* pHead, int k ) {
// write code here
if(pHead==NULL||k==0) return 0; //空链表和倒数第0个节点都返回0
struct ListNode *p=pHead,*q=pHead; //双指针法,定义两个链表类型的指针,达到进阶的空间复杂度O(1)
for(int i=1;i<k;i++){ //for循环让p和q的距离保持为k
q=q->next;
if(q==NULL) return 0; //如果链表长度不够k,则返回0
}
while(q->next!=NULL){ //p和q同步往后走,让q指向最后一个节点,p则为倒数第k个节点
p=p->next;
q=q->next;
}
return p; //返回p即可
}
