输入一个长度为 n 的链表,设链表中的元素的值为 ai?,返回该链表中倒数第k个节点。
如果该链表长度小于k,请返回一个长度为 0 的链表。
思路:
快指针先走k步,然后快慢指针一起走,如果快指针为空时,那么慢指针的指向即为链表倒数第k个结点。
特殊情况为k>列表的长度。这是应返回NULL
代码:
?
struct ListNode* FindKthToTail(struct ListNode* pHead, int k ) {
// write code here
struct ListNode*slow=pHead,*fast=pHead;
while(k--){
if (fast==NULL) {
return NULL;
}
fast=fast->next;
}
while (fast) {
fast=fast->next;
slow=slow->next;
}
return slow;
}