问题描述:

给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。

链接:https://www.nowcoder.com/questionTerminal/253d2c59ec3e4bc68da16833f79a38e4
来源:牛客网

假设x为环前面的路程(红色路程),a为环入口到相遇点的路程(绿色路程,假设顺时针走), c为环的长度(蓝色路程)

设置快慢指针fast和slow,快指针的速度是慢指针的两倍

当快慢指针相遇的时候:

此时慢指针走的路程为Sslow = x + m * c + a
快指针走的路程为Sfast = x + n * c + a
2 Sslow = Sfast
2 * ( x + m*c + a ) = (x + n *c + a)
从而可以推导出:
x = (n - 2 * m )*c - a
= (n - 2 *m -1 )*c + c - a
即环前面的路程 = 数个环的长度(为可能为0) + c - a
什么是c - a?这是相遇点后,环后面部分的路程(橙色路程)和x(红色路程)相等

class Solution:def EntryNodeOfLoop(self, pHead):# write code hereif pHead==None or pHead.next==None or pHead.next.next==None:return None# 一快一慢low=pHead.nextfast=pHead.next.next# 如果有环,两者会相遇while low!=fast:if fast.next==None or fast.next.next==None:return Nonelow=low.nextfast=fast.next.next# 相遇时的位置到环入口的距离和起始点到环入口的距离相同fast=pHeadwhile low!=fast:low=low.nextfast=fast.nextreturn fast

转载于:https://www.cnblogs.com/happyfan/p/11442039.html

【剑指offer】链表中环的入口相关推荐

  1. 剑指Offer——链表中环的入口结点

    题目描述: 一个链表中包含环,请找出该链表的环的入口结点. 分析: 设置两个指针p1,p2, 两个指针都从链表的头部开始走,不过p1每次走一步,p2每次走两步. 直到相遇的时候,p2走的长度是p1的两 ...

  2. 递增的整数序列链表的插入_每日算法题 | 剑指offer 链表专题 (5)链表中倒数第k个节点...

    点击上方"Jerry的算法和NLP",选择"星标"公众号 重磅干货,第一时间送达 题目 链表中倒数第k个节点 题目要求 输入一个链表的头结点,从尾到头反过来打印 ...

  3. 划水总结剑指offer 链表系列1

    最近在找实习,发现面试题和oj的题差距蛮大的,然后粗略的刷了一遍剑指offer.希望6月中旬前能拿个实习(捂脸哭) 1.首先总结关于链表的题. (1)从尾到头打印一个链表.像我这样的憨憨上来就想 这不 ...

  4. 剑指 offer 链表倒数的第k个数

    快慢指针 快指针线遍历到第k-1个数,然后慢指针在从头开始遍历,这样快慢指针有k-1个间隔,当快指针到链表末尾时,慢指针指的数就是倒数第k个数. public class Solution {     ...

  5. 剑指Offer——链表中倒数第K个节点

    1.题目描述 输入一个链表,输出该链表中倒数第k个结点. 2.代码实现 package com.baozi.offer;/*** @author BaoZi* @create 2019-07-11-1 ...

  6. python数据结构剑指offer-链表中环的入口结点

    例题 描述 给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null. 数据范围: n\le10000n≤10000,1<=结点值<=100001<=结点值& ...

  7. 剑指offe55--链表中环的入口结点

    给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null. 做这个题之前,我们应该先明白链表有环是什么的样的情况,理解的什么链表中有环的样子,我们就可以来理解这个题的思路的.这个题分两 ...

  8. 剑指offer 链表中倒数第k个节点

    题目描述 输入一个链表,输出该链表中倒数第k个结点. 解决方案: public class Solution {public ListNode FindKthToTail(ListNode head, ...

  9. python删除链表的倒数第k个节点,剑指offer 链表中的倒数第K个节点 Python and C++

    题目描述 输入一个链表,输出该链表中倒数第k个结点. 思路 假设链表中的节点数大于等于k个,那么一定会存在倒数第k个节点,首先使用一个快指针先往前走k步,然后两个指针每次走一步,两个指针之间始终有k的 ...

  10. Java解析剑指Offer链表篇(1)

    目录 一.移除链表元素 1.题目要求 2.基本思路 3.代码演示 二.反转链表 1.题目要求 2.基本思路 3.代码实现 三.链表的中间结点 1.题目要求 2.基本思路 3.代码实现 四.链表中倒数第 ...

最新文章

  1. 爬虫之 xpath的节点关系
  2. BZOJ 2456 : mode
  3. DCMTK:DSRNumericMeasurementValue类的测试程序
  4. snoopy(强大的PHP采集类) 详细介绍
  5. vue之node.js的简单介绍
  6. Java多线程:线程停止
  7. JavaScript 中 2个等号(==)和 3个等号(===)之间的区别
  8. 计算机基础17秋在线作业3,南开17秋学期《计算机应用基础》在线作业3
  9. 新的 Windows Azure 网络安全性白皮书
  10. 关于js中window.location.href、location.href、parent.location.href、top.location.href的用法...
  11. 计算机教室戴尔电脑网络同传,DELL商用台式电脑如何作网络同传
  12. MATLAB中LINGO软件及数学规划问题应用
  13. ESP32 SIM800L:发送带有传感器读数的文本消息(SMS警报)
  14. 动物基因组测序基础分析流程总结(GWAS全流程第一部分:WGS基础流程)
  15. 大风车音乐计算机,大风车歌曲
  16. [极客大挑战 2019]Http 1(修改HTTP请求包)
  17. mysqloffset什么意思_重新认识Mysql的LIMIT OFFSET
  18. E212: Can‘t open file for writing:权限不够或者没有上级目录
  19. questasim中点击 add wave 后,显示 no data 解决方法
  20. 设计模式——中介模式

热门文章

  1. HTML-超链接标签,表格,列表
  2. Java ME游戏编程_Java ME游戏编程(第2版)
  3. ffmpeg中的sws_scale算法性能测试
  4. c语言喂狗的作用,兽医忠告:用这几样食物喂狗,简直就是喂“砒霜”!
  5. delphi基于html页面和xml实现表单填写,如何从xml文件读取数据,并以delphi语言显示在文本框中...
  6. android 今日头条布局,Android今日头条UI适配完善版
  7. 数学一年级应用题_【专项练习】一年级下册数学100以内加减法应用题专项练习,附答案...
  8. 微信小程序:配置合法域名
  9. 【Python3】【爬虫】bilibili摄影板块
  10. gram矩阵的性质_第十七课:正交矩阵和GramSchmidt正交化——MIT线性代数课程学习笔记...