采用快慢指针
struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) { struct ListNode* slow = pListHead; struct ListNode* fast = pListHead; while(k) { fast = fast->next; k--; } while(fast) { slow = slow->next; fast = fast->next; } return slow; }
一定要判断 fast 是否为空,可能就没有 k 个结点
正确的
struct ListNode* FindKthToTail(struct ListNode* pListHead, int k )
{
struct ListNode* slow = pListHead;
struct ListNode* fast = pListHead;
while(k)
{
if (fast == NULL)
{
return NULL;
}
fast = fast->next;
k--;
}
while(fast)
{
slow = slow->next;
fast = fast->next;
}
return slow;
}