牛客题霸 [链表中倒数第k个结点] C++题解/答案

链表中倒数第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;
    }
};
posted @ 2020-11-07 00:03  回归梦想  阅读(47)  评论(0编辑  收藏  举报