双指针法,注意边界条件
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
if(pListHead == NULL || k < 1)
return NULL;
ListNode* slow,* fast;
slow = fast = pListHead;
int dis = k-1;
while(dis--) {
if(fast->next != NULL)
fast = fast->next; //快指针先走k-1步
else { //链表长度小于k
return NULL;
}
}
while(fast->next != NULL) {
slow = slow->next;
fast = fast->next;
}
return slow;
}
};