题目描述
输入一个链表,输出该链表中倒数第k个结点。
解题思路
设置两个结点,先让第一个结点跳 k 次,之后两个结点一起跳。当第一个结点到达链表尾巴的时候,第二个结点正好在倒数第k个上。
实现
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
ListNode *chess1 = pListHead;
ListNode *chess2 = pListHead;
int i = 0;
for(; chess2 != NULL; i++){
if(i >= k){
chess1 = chess1->next;
}
chess2 = chess2->next;
}
return i < k ? NULL : chess1;
}
};
运行结果
运行时间:5ms
占用内存:456k