博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Algorithms—142.Linked List Cycle II
阅读量:2455 次
发布时间:2019-05-11

本文共 811 字,大约阅读时间需要 2 分钟。

思路:双指针跑圈,跑到有圈的时候快指针停止,重新做一个指针从头开始,跟慢指针一样以一次一步的速度跑,跑到相同时返回,因为多余的长度L等于圈长M的倍数+慢指正回到起点的步数。

快指针速度:2,慢指针速度:1

多余长度:L

圈长:M

快慢指针相遇时间:T

相遇地点距离圈起始位置:N

2T=L+X*M+N;

T=L+Y*M+N;

=>

T=(X-Y)*M;

=>

L=(X-2Y)*M-N;

即结论。

/** * Definition for singly-linked list. * class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { *         val = x; *         next = null; *     } * } */public class Solution {    public ListNode detectCycle(ListNode head) {    	ListNode fast=head;    	ListNode slow=head;        while (true) {			if (fast==null||fast.next==null) {				return null;			}			fast=fast.next.next;			slow=slow.next;			if (fast==slow) {				ListNode again=head;				while (true) {					if (slow==again) {						return again;					}else {						slow=slow.next;						again=again.next;					}				}			}		}    }}

耗时:308ms,中游。

你可能感兴趣的文章
p值 统计学意义_什么是统计意义? P值定义以及如何计算
查看>>
23岁一无所有怎么办_我搬到国外去创业,然后一无所有。
查看>>
gdb -iex_如何使用IEX Cloud,Matplotlib和AWS在Python中创建自动更新数据可视化
查看>>
craigslist_Craigslist,Wikipedia和丰富经济
查看>>
css 选择器 伪元素_CSS伪元素-解释选择器之前和之后
查看>>
工厂用抽象类比接口_用简单的现实类比解释硬编码概念
查看>>
aws lambda使用_如何使用AWS Lambda和S3构建无服务器URL缩短器
查看>>
c专家编程/c陷阱_如何避免常见的初学者陷阱并像专家一样开始编码
查看>>
classlist使用方法_如何通过使用HTML5的classList API在没有jQuery的情况下操作类
查看>>
openstack项目_新项目,安全性以及更多OpenStack新闻
查看>>
美国正在丢掉非洲数字市场_即插即用服务器可访问非洲数百万个数字文档
查看>>
openstack做安卓_我们是我们为OpenStack做出的贡献
查看>>
为什么从SparkFun而不是Bigbox卖家购买?
查看>>
使用TurnKey Linux的用户友好型虚拟主机
查看>>
开源实时数据库_实时应用程序的开源数据库
查看>>
64 位文件共享锁定数溢出_一位教授如何通过共享教科书为学生节省数百万美元
查看>>
网络虚拟化 软件定义网络_软件定义网络简介
查看>>
组织学习:DevOps的新视角
查看>>
openstack项目_沃尔玛的OpenStack,项目改革现状等
查看>>
unity 作弊_屏幕作弊没问题,Unity打开,等等
查看>>