AcWing 33. 链表中倒数第k个节点

习题地址 https://www.acwing.com/solution/acwing/content/2997/

题目描述
输入一个链表,输出该链表中倒数第k个结点。

注意:

k >= 0;
如果k大于链表长度,则返回 NULL;

样例

输入:链表:1->2->3->4->5 ,k=2

输出:4

算法1
除开大佬说的遍历链表两次 也可以开一个数组记录链表的元素地址 然后返回倒数第K个

C++ 代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* findKthToTail(ListNode* pListHead, int k) {
        vector<ListNode*> v;
        ListNode* p = pListHead;
        if(pListHead == NULL)
            return NULL;
        while(p != NULL){
            v.push_back(p);
            p = p->next;
        }
        if(k > v.size())
            return NULL;

        int idx = v.size();

        return v[idx-k];
    }
};

作者:defddr
链接:https://www.acwing.com/solution/acwing/content/2997/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

posted on 2019-07-22 14:27  itdef  阅读(136)  评论(0)    收藏  举报

导航