
设置两个指针,快指针先行遍历k次,然后在同慢指针同步遍历。当快指针抵达链表尾部时,慢指针所指位置即链表中倒数第k个结点。遍历期间,要注意快指针先到达链表尾部的情况。
具体代码如下:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* findKthToTail(ListNode* pListHead, int k) {
ListNode *p = pListHead, *q = pListHead;
for(int i = 0; i < k; i++){
if(!p) return NULL;
p = p -> next;
}
while(p){
p = p -> next;
q = q -> next;
}
return q;
}
};
博客介绍了在链表中查找倒数第k个结点的方法,通过设置快慢两个指针,快指针先遍历k次,再与慢指针同步遍历,当快指针到链表尾部时,慢指针所指即为目标结点,同时提醒要注意快指针先到尾部的情况,并给出了具体代码。
1744

被折叠的 条评论
为什么被折叠?



