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
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
作 者: itdef
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力
阿里打赏 微信打赏
原文地址:https://www.cnblogs.com/itdef/p/11225649.html