剑指offer|链表中倒数第k个结点

来源:互联网 发布:yii2连接多个数据库 编辑:程序博客网 时间:2024/06/04 22:24

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

思路:
这题比较常见,用两个指针就可以搞定。一个指针先往后移k位置,然后两个指针再一起走。直到先走的那个指针到达链表的末尾的后面。后走的指针当前位置就是要找的倒数第k个结点。

注意:
1. 检查输入链表是否为空,空的话直接返回空指针。
2. k是否大于0。不大于0则没有意义。直接返回空指针。
3. 判断k是否小于链表长度。大于直接返回空指针。

class Solution {public:    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {        if(pListHead == nullptr || k == 0)            return nullptr;        ListNode* pFront=pListHead;        while(k>0 && pFront !=nullptr)        {            pFront=pFront->next;            --k;        }        if(k>0)            return nullptr;        ListNode* pBehind=pListHead;        while(pFront != nullptr)        {            pBehind=pBehind->next;            pFront=pFront->next;        }        return pBehind;    }};
0 0
原创粉丝点击