题目
输入一个链表,输出该链表中倒数第k个结点。
注意:
k >= 0;
如果k大于链表长度,则返回 NULL;
样例
输入:链表:1->2->3->4->5 ,k=2
输出:4
解法:模拟
首先求出链表的长度,如果k大于链表长度,则返回 NUL
再从头(0)开始遍历到第n-k个结点即可
时间复杂度O(n),空间复杂度O(1)
/*** 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) {if (k == 0) return nullptr;int len = 0;auto p = pListHead;while (p) {p = p->next;len++;}if (k > len) return nullptr;p = pListHead;k = len - k;while (k--) {p = p->next;}return p;}};
