美文网首页
链表中倒数第k个结点

链表中倒数第k个结点

作者: su945 | 来源:发表于2020-05-02 12:09 被阅读0次

题目描述

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

问题分析

可以使用两个指针,一个在表头,第二个先走k-1步。
然后同时查询链表,当第二个指针到达链表尾部时,第一个指针到达倒数第K个节点。

解题思路1

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
public:
    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {

        if (pListHead == nullptr || k == 0)
        {
            return nullptr;
        }
        ListNode* firstList = pListHead;
        ListNode* secondList = pListHead;
        //第二个指针先走k-1步
        for (int i = 0; i < k-1; ++i)
        {
            if (secondList->next != nullptr)
            {
                secondList = secondList->next;
            }
            else
            {
                return nullptr;
            }
        }
        //同时走,直到第二个指针到达链表尾部,此时第一个指针就到达了
        while (secondList->next != nullptr)
        {
            firstList = firstList->next;
            secondList = secondList->next;
        }
        return firstList;

    }
};

相关文章

网友评论

      本文标题:链表中倒数第k个结点

      本文链接:https://www.haomeiwen.com/subject/wbckghtx.html