判断链表中是否有环、并找出环的入口
来源:互联网 发布:企业网站seo教程 编辑:程序博客网 时间:2024/05/16 05:11
判断链表中是否有环的算法就是利用快慢指针
public class Solution { public boolean hasCycle(ListNode head) { if(head==null||head.next==null)return false; ListNode slow=head; ListNode fast=head.next; while(fast.next!=null&&fast.next.next!=null){ if(slow==fast)return true; fast=fast.next.next; slow=slow.next; } return false; }}
但是判断环的入口就有点麻烦了:
a:出发
b:入口点
c:快慢指针相遇点
只要知道ab需要走多少步,就确定了入口。
相遇的时候,慢指针从a走到了c,快指针从a出发,在环里面绕了n(n>1)圈到c相遇, 快-慢=n圈
快=2慢,2ac-ac=ac=ab+bc=n圈,那么ab=n圈-bc=(n-1)圈+(1圈-bc);所以从等式可以看出,从a出发到b相当于从c出发走(n-1)圈再走cb段:
import java.util.*;public class Solution { public ListNode detectCycle(ListNode head) { if(head==null||head.next==null)return null; ListNode slow=head; ListNode fast=head; while(fast!=null&&fast.next!=null){ fast=fast.next.next; slow=slow.next; if(fast==slow){ ListNode fast1=head; while(fast1!=slow){ fast1=fast1.next; slow=slow.next; } return slow; } } return null; }}
阅读全文
0 0
- 判断链表中是否有环、并找出环的入口
- 如何判断一个链表是否有环,如果有环,并找出环的入口
- 首先如何判断一个链表是否有环,并找出环的入口
- 判断一个链表是否有环,并找出环的入口
- 判断单链表是否存在环,并找出环的入口
- 判断单链表是否有环,若有请找出入口
- 判断一个单链表是否有环,若有,找出环的入口节点
- 判断链表是否有环以及找出环的入口点知识总结
- 判断链表是否存在环并找出环的入口
- 单链表之检测链表是否有环并找出环的入口点
- 2.1 链表-判断是否有环并确定环入口
- 判断单链表是否有环,如果有找出环的入口位置=>求两个相交链表的交点
- 如何判断单链表有环,并找出环的入口
- 判断一个链表是否有环,并且找出入口点
- 判断单链表是否有环 并找出第一个相交的节点
- 判断单链表是否有环 并找出第一个相交的节点
- 判断单链表是否有环及找环的入口
- 判断单链表是否有环,返回环的入口节点
- java连接各种数据库及配各种服务器数据池(更新中)
- 与其他的PDF编辑器相比,迅捷PDF编辑器实在好用太多了
- jquery获取值传值
- Rk3288核心板Cadence制作(一)之原理图设计及orcad常用快捷键
- <html:messages id="">标签 <html:errors/>标签
- 判断链表中是否有环、并找出环的入口
- Go语言学习之strings包(the way to go)
- [摘]actionMessages(),actionError()介绍
- [转贴]将Jar文件制作成exe文件
- OpenGL Pixel Buffer Object (PBO)
- 认识理解Java中native的方法
- python 安装 三方组件方法
- Java简单模拟ping
- centos7 安裝 Nginx