这里我们用到双指针的思路
双指针和快慢指针yyds
先让n2走k步
让n2领先n1k步,让n2和n1同时向后走(这里n1才从头开始走)
当n2走到空的时候,那么n1刚好走到链表倒数第k个位置
struct ListNode* getKthFromEnd(struct ListNode* head, int k){
struct ListNode* n1=head;
struct ListNode* n2=head;
while(k)
{
k--;
if(n2==NULL)
{
return NULL;
}
n2=n2->next;
}
while(n2)
{
n1=n1->next;
n2=n2->next;
}
return n1;