定義兩個結點p,q指向頭節點,p先走k步,然後,p,q同時走,直到p走到最後null爲止,此時,q就是倒數k位置。
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
ListNode* p=pListHead;
ListNode* q=pListHead;
for(int i=0;i<k;i++){ //到k值跳出循環
if(p!=NULL){
p=p->next;
}
else
return NULL;
}
while(p!=NULL){
p=p->next;
q=q->next;
}
return q;
}
};
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
ListNode* p=pListHead;
ListNode* q=pListHead;
while(k>0 && p!=NULL){
p=p->next;
k--;
}
if(k>0 && p==NULL)
return NULL;
while(p!=NULL){
p=p->next;
q=q->next;
}
return q;
}
};