题解 | #链表中倒数最后k个结点#
链表中倒数最后k个结点
https://www.nowcoder.com/practice/886370fe658f41b498d40fb34ae76ff9
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pHead ListNode类 * @param k int整型 * @return ListNode类 */ /* 我的方法比较笨。 学习:刚刚看到一个比较巧妙的,使用快慢指针,先让快指针先移动k,然后慢指针和快指针同时移动保证相差k个距离,然后当快指针指向null时候,也就找到了 */ struct ListNode* FindKthToTail(struct ListNode* pHead, int k ) { //方法一: //遍历长度 //比较k //再遍历一遍 struct ListNode* tmp = pHead; int i = 1; if (pHead != NULL) { while (tmp->next != NULL) { //没有指向最后一个 i++; tmp = tmp->next; } } if (k > i) { tmp = NULL; } else { k = i - k; i = 1; } //找到指针 if (tmp != NULL) { tmp = pHead; for (i = 1; i <= k; i++) { tmp=tmp->next; } } return tmp; }