牛客网刷题|输入一个链表,输出该链表中倒数第k个结点。

题目来源:牛客网
编程链接

题目描述:

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

解析:

使用两个指针,一个指针先走K-1步,之后同时走。当先走的指针到到最后时,第二个指针也就到倒数第K个结点了。

代码:

class Solution {
public:
    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
        auto pre = pListHead,ptr = pre;
        for(int i=0;i<k-1&&pre!=nullptr;i++,pre=pre->next);
        if(pre==nullptr)  //考虑先走的指针走完了。。说明原链表没有k个结点
            return nullptr;
        for(;pre->next!=nullptr;ptr=ptr->next,pre = pre->next);
        return ptr;    
    }
};

运行时间:3ms ;占用内存:512k

猜你喜欢

转载自blog.csdn.net/legalhighhigh/article/details/80157928