剑指offer 15.链表中倒数第k个节点
- 题目:https://www.nowcoder.com/practice/529d3ae5a407492994ad2a246518148a?tpId=13&tqId=11167&tPage=1&rp=1&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking
- 思路:
- 转换思路,倒数第k个节点,就是说正着数第nums-k个节点
- 启发或者坑
- 如果k大于链表的长度,返回NULL
- 代码
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { ListNode* t = pListHead; int num = 0; while(pListHead) { num++; pListHead = pListHead->next; } int times = num -k; while(times > 0) { t = t->next; times--; } if (times < 0) return NULL; return t; } };