博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
题目描述 一个链表中包含环,请找出该链表的环的入口结点。要求不能使用额外的空间。
阅读量:4212 次
发布时间:2019-05-26

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

题目描述

一个链表中包含环,请找出该链表的环的入口结点。要求不能使用额外的空间。可以参见剑指offer上的原题。代码如下:

 

package cn.cqu.edu;public class NodeOfLoop {		class ListNode {	    int val;	    ListNode next = null;	    ListNode(int val) {	        this.val = val;	    }	}		//先判断有没有形成环,返回环中的任意一个节点	public ListNode isLoop(ListNode pHead)	{		if(pHead==null)		{			return null;		}				ListNode mSlow=pHead.next;		ListNode mFast=pHead.next;		if(mFast==null)		{			return null;		}				mFast=mFast.next;				while(mFast!=null && mSlow!=null)		{			if(mFast==mSlow)			{				return mFast;			}			mSlow=mSlow.next;			mFast=mFast.next;			if(mFast==null)			{				break;			}			mFast=mFast.next;		}						return null;	}		public ListNode EntryNodeOfLoop(ListNode pHead)    {		ListNode oop=isLoop(pHead);		if(oop==null)		{			return null;  //没有形成环		}				int cnt=1; //计算环的个数有多少个		ListNode temp=oop;		oop=oop.next;		while(oop!=temp)		{			cnt++;			oop=oop.next;		}				ListNode p1=pHead;		ListNode p2=pHead;				while(cnt>0)		{			p1=p1.next;			cnt--;		}				while(p1!=p2)		{			p1=p1.next;			p2=p2.next;		}				return p1;				            }	public static void main(String[] args) {							}}

 

转载地址:http://xdkmi.baihongyu.com/

你可能感兴趣的文章
Hbase案例:浏览器用户行为分析
查看>>
SQL Server 2008 Reporting Services报表中文乱码问题
查看>>
report builder 报表表头固定
查看>>
DNS中的正向解析与反向解析
查看>>
忘记oracle的sys用户密码怎么修改
查看>>
科德十二定律(Codd's 12 rules)
查看>>
VBS ConvertToXlsx
查看>>
Java位运算总结:位运算用途广泛
查看>>
(Kettle)合并记录步骤
查看>>
XML5个转义符
查看>>
js获取json对象键名及值
查看>>
有向无环图
查看>>
word 2007 中插入图片无法显示,只能显示底部一部分
查看>>
金字塔分组算法
查看>>
Kettle与Java集成——Java代码调取运行资源库的Transformation
查看>>
MySQL验证是否字符是日期串
查看>>
函数嵌套例子
查看>>
style 页面
查看>>
导航条下拉菜单
查看>>
图像透明度
查看>>