题目来源:牛客网
编程链接
题目描述:
输入一个链表,输出该链表中倒数第k个结点。
解析:
使用两个指针,一个指针先走K-1步,之后同时走。当先走的指针到到最后时,第二个指针也就到倒数第K个结点了。
代码:
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
auto pre = pListHead,ptr = pre;
for(int i=0;i<k-1&&pre!=nullptr;i++,pre=pre->next);
if(pre==nullptr) //考虑先走的指针走完了。。说明原链表没有k个结点
return nullptr;
for(;pre->next!=nullptr;ptr=ptr->next,pre = pre->next);
return ptr;
}
};
运行时间:3ms ;占用内存:512k