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

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

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

注意:spa

k >= 0;
若是k大于链表长度,则返回 NULL;code

样例blog

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

输出:4

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

C++ 代码

it

/**
 * 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
著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。
相关文章
相关标签/搜索