链表操作,查找链表中倒数第K个值

思路

  1. 遍历一遍获得链表长度,取出n-k+1个节点的数据域
  2. 定义快慢指针,快的先走K-1步。

易错点

倒数第k个,与倒数第一个pHead->next==nullptr的节点相差k-1,而不是k

源码

class Solution {
public:
    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
        if(pListHead==nullptr||k==0)
            return nullptr;
        ListNode* pHead=pListHead;
        ListNode* pAfter=pListHead;
        for(int i=0;i<k-1;i++)//注意:倒数第k个,与倒数第一个pHead->next==nullptr的节点相差k-1
        {
            if(pHead->next!=nullptr)
                pHead=pHead->next;
            else
                return nullptr;
        }
        while(pHead->next!=nullptr)
        {
            pHead=pHead->next;
            pAfter=pAfter->next;
        }
        return pAfter;
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 搞懂单链表常见面试题 Hello 继上次的 搞懂基本排序算法,这个一星期,我总结了,我所学习和思考的单链表基础知识...
    醒着的码者阅读 4,618评论 1 45
  • //leetcode中还有花样链表题,这里几个例子,冰山一角 求单链表中结点的个数----时间复杂度O(n)这是最...
    暗黑破坏球嘿哈阅读 1,540评论 0 6
  • 链表 记录《剑指offer》中所有关于链表的题目,以及LeetCode中的相似题目 相关题目列表 题目 链表是面试...
    wenmingxing阅读 1,183评论 0 11
  • 单链表 单链表问题与思路 找出单链表的倒数第K个元素(仅允许遍历一遍链表)使用指针追赶的方法。定义两个指针fast...
    wxkkkkk阅读 617评论 0 0
  • 窗外, 小雨纷纷扬扬地下; 行人, 匆匆路过留下一串水花; 似乎所有动作都已停下, 只有那雨密密斜织着 自己的锦帕...
    HONEYKIKI阅读 239评论 0 0