当前位置: 首页 > news >正文

LeetCode 142. Linked List Cycle II 20170706

Given a linked list, return the node where the cycle begins. If there is no cycle, return null.

Note: Do not modify the linked list.

题目大意:给定一个链表,如果该链表存在环,返回环的起点。如果不存在,返回null

解题思路:本题是一道有趣的行程问题。在这里给出该行程问题的推导。

假设有两个快慢指针fast和slow,其中fast一次走两步,slow一次走一步,两者同时出发,由于存在环,所以必定会在某点相遇。设head到环起点距离为a,起点距离到相遇点距离为b,环长度为c。则fasts=2slows,slows=a+b,fasts=a+b+n*c,所以可知slows=n*c,a=n*c-b。当相遇后,令slow返回head,两者同时以每次一步的速度前进。slow从head走到起点走了a,fast也相遇点走了a,因为a=n*c-b=(n-1)*c+c-b,所以可知a+b=n*c,fast恰好也走回了起点。这样就能把每个变量都求出来,就能求出起点位置了。

class Solution(object):
  def detectCycle(self, head):
    """
    :type head: ListNode
    :rtype: ListNode
    """
    if head == None or head.next == None:
      return None
    slow = fast = head
    while fast and fast.next:
      slow = slow.next
      fast = fast.next.next
      if fast == slow:
        break
    if slow == fast:
      slow = head
      while slow != fast:
        slow = slow.next
        fast = fast.next
      return slow
    return None

 

转载于:https://www.cnblogs.com/fangdai/p/7125308.html

相关文章:

  • 算法-三向字符串快速排序
  • 国内互联网医疗的反思和2016年9大前沿趋势
  • 选择服务器托管都有哪些优势和不足
  • SpringBoot使用教程【1】Restful API设计 返回json,xml格式
  • weblogic部署web项目出现错误
  • 自制字幕遮挡器
  • CYQ.Data 轻量数据层之路 抢先体验版本功能说明演示 (二十九)
  • 性能测试解惑之并发压力
  • AWS CTO:“我真心讨厌跟软件工具供应商打交道”
  • 思科发现英特尔集成显卡驱动存在安全漏洞 可任意执行代码
  • 为何科技独角兽接连上市
  • 秒表---框架搭建
  • 【转】maven命令-P 参数引发的思考
  • Chapter3_操作符_关系操作符
  • 安全抽象:网络安全生态系统从复杂臃肿到有效自动化的发展之道
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【刷算法】从上往下打印二叉树
  • go语言学习初探(一)
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • js中的正则表达式入门
  • node-glob通配符
  • Redash本地开发环境搭建
  • scala基础语法(二)
  • select2 取值 遍历 设置默认值
  • SpiderData 2019年2月25日 DApp数据排行榜
  • Spring框架之我见(三)——IOC、AOP
  • Sublime Text 2/3 绑定Eclipse快捷键
  • vue-cli3搭建项目
  • 飞驰在Mesos的涡轮引擎上
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 如何编写一个可升级的智能合约
  • 深入浅出webpack学习(1)--核心概念
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 携程小程序初体验
  • 赢得Docker挑战最佳实践
  • #13 yum、编译安装与sed命令的使用
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (C语言)球球大作战
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (SpringBoot)第二章:Spring创建和使用
  • (第61天)多租户架构(CDB/PDB)
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (三)模仿学习-Action数据的模仿
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (转)memcache、redis缓存
  • (转)关于pipe()的详细解析
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .chm格式文件如何阅读
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .Net IOC框架入门之一 Unity
  • .Net Redis的秒杀Dome和异步执行
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)