链表中倒数第k个结点
题解:
我们把链表存两份,让其中一个先走k个节点,然后两个链表一起走,直到第一个链表到头,因为两个相差k个节点,所以第二个链表停的位置就是倒数第k个
代码:
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
ListNode *pList1=pListHead;
ListNode *pList2=pListHead;
for(int i=0;i<k;i++)
{
if(pList2==NULL)return NULL;
pList2=pList2->next;
}
while(pList2)
{
pList1=pList1->next;
pList2=pList2->next;
}
return pList1;
}
};