题解 | #链表中倒数最后k个结点#

链表中倒数最后k个结点

https://www.nowcoder.com/practice/886370fe658f41b498d40fb34ae76ff9

//参考了剑指offer中记载的快慢指针法。快指针提前走k-1步。快指针抵达终点时慢指针就能到倒数第k个节点处了。例:1->2。求倒数第1个节点。提前走0步。快慢指针一起到最后一个节点。
class Solution {
public:
    ListNode* FindKthToTail(ListNode* pHead, int k) {
        if(pHead==nullptr || k<=0)
            return nullptr;
        int times=k-1;
        ListNode* fast=pHead;
        ListNode* slow=pHead;
        for (int i=k-1; i>0; i--) {
            if(fast->next==nullptr)
            {
                return nullptr;
            }else {
                fast=fast->next;
            }
        }
        while (fast->next!=nullptr) {
            fast=fast->next;
            slow=slow->next;
        }
        return slow;
    }
};

全部评论

相关推荐

10-05 11:11
海南大学 Java
投票
理想江南137:感觉挺真诚的 感觉可以试一试
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务