题目描述
输入一个链表,输出该链表中倒数第k个结点。
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
if(pListHead==NULL||k<1)
return NULL;
ListNode *pre_node=pListHead;
ListNode *last_node=pListHead;
while(k--){
if(pre_node==NULL)
return NULL;
pre_node=pre_node->next;
}
while(pre_node!=NULL){
pre_node=pre_node->next;
last_node=last_node->next;
}
return last_node;
}
};
上面这个思路我没想到,比较有趣。
下面这个是我的思路,但是我不知道怎么实现,参考了别人的代码才会的。
总之这篇要复习
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
vector< ListNode* > a;
while(pListHead!=NULL){
a.push_back(pListHead);
pListHead=pListHead->next;
}
if(a.size()<k||k<1)
return NULL;
return a[a.size()-k];
}
};