题解 | #链表中倒数最后k个结点#
链表中倒数最后k个结点
https://www.nowcoder.com/practice/886370fe658f41b498d40fb34ae76ff9
这道题还是非常简单的,只需要重新定义一个指针作为链表的尾指针即可实现返回倒数k个节点。
主要思路是:
首先将pHead赋给pTail;
然后在pTail!=NULL的情况下,将pTail向后移动k-1个节点;如果发生pTail==NULL的情况,则说明数量不足以返回倒数k个, return NULL即可;
然后就是在pTail->next!=NULL的情况下,不停地向后移动pHead和pTail即可,最后返回pHead就好~
我犯错的点在于没有考虑k==0这个特殊情况,不过鼠鼠窝呀还是考虑到pHead为NULL的情况了,只能说还是写的太少了,没经验捏qaq
struct ListNode* FindKthToTail(struct ListNode* pHead, int k ) { // write code here if(pHead==NULL) { return NULL; } if(k==0) { return NULL; } struct ListNode* pTail = pHead; for(int i=1;i<k;i++) { pTail = pTail->next; if(pTail==NULL) { return NULL; } } while(pTail->next!=NULL) { pHead = pHead -> next; pTail = pTail -> next; } return pHead; }