题解 | #链表中倒数最后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;
}
查看26道真题和解析