快慢指针解法

链表中倒数第k个结点

http://www.nowcoder.com/questionTerminal/529d3ae5a407492994ad2a246518148a

假设链表长度为n,则可以将链表分成3部分:

  1. 起点 [1,1]
  2. 第二个结点到第n-k个结点 [2, n-k]
  3. 倒数第k个结点到第n个结点 [n-k+1, n]
    划分如图:
    图片说明

所以结点从起点开始走n-k-1+1 = n-k步就到达倒数第k个结点。
也就是要计算出n-k的长度。
那么根据输入的参数k,设置快慢指针可以达到目的
设置快慢指针,让两者指向第一个结点
然后,先让快指针从起点走k步,此时访问的表长为k+1个结点,所以剩下的结点加上链表尾后的空位置共有n-(k+1)+1 = n-k个结点;
然后,让快慢指针同步向前走,当快指针到达空位置,两个指针都走了n-k步,即慢指针到达倒数第k个结点

全部评论

相关推荐

05-25 10:45
门头沟学院 Java
Frank_zhan...:没实习一个项目肯定不够,可以再做一个轮子,技术栈再补一个mq,微服务,整体再换个简历模板,暑期尽量再找一个日常实习
无实习如何秋招上岸
点赞 评论 收藏
分享
大飞的诡术妖姬:之前看b站多明海有个说法,日本就业竞争非常低的原因不光是毕业学生少,还有很多人干两年不喜欢职场氛围就辞职躺平,位置也空了很多,论吃苦耐劳还得看咱们
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务