习题地址 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 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。