博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
链表17:链表判环
阅读量:3730 次
发布时间:2019-05-22

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

题目:如何判断一个单链表是否有环?有环的话返回进入环的第一个节点的值,无环的话返回-1。如果链表的长度为N,请做到时间复杂度O(N),额外空间复杂度O(1)。

给定一个单链表的头结点head(注意另一个参数adjust为加密后的数据调整参数,方便数据设置,与本题求解无关),请返回所求值。

详见LB7,只是返回值不同,是返回结点值或者-1。

普通方法,空间复杂度为O(1),使用hash表,将每个遍历的对象放入到hash中,然后逐个向下遍历,每遍历一个去hash表中寻找有无相同的对象;如果有就说明循环,即有环;注意,只要有环,总是能够遍历有相同的对象,环不可能无限大。如果pcur==null那么显然无环。

public class ChkLoop {     public int chkLoop(ListNode head, int adjust)    {        //特殊的输入        if (head==null) return -1;        //计算得到环中结点的数目        int nodesNumberOfLoop=this.NodesNumberOfLoop(head);        //如果没有环,直接返回null        if(nodesNumberOfLoop==0) return -1;                //如果有环,并且已知环的结点数目为n,来找环的入口结点        ListNode p1=head;        ListNode p2=head;        //指针p1先走n步        for(int i=0;i

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

你可能感兴趣的文章
SQL serve 建表与修改操作
查看>>
SQL serve聚合函数与分组查询
查看>>
SQL server 内置函数之字符串函数
查看>>
java之Eclipse部分使用操作
查看>>
Linux文件与文件夹命令
查看>>
SQL内置函数之类型转换函数
查看>>
SQL内置函数日期函数
查看>>
SQL内置函数数学函数
查看>>
SQL内置函数之排名函数
查看>>
SQL内置函数之系统函数
查看>>
表的联接查询之连接查询
查看>>
SQL server 存储过程
查看>>
Qt Http通信: TLS initialization failed 解决方法
查看>>
QT QMessageBox 弹出两次的可能原因
查看>>
QT 设置QLabel文字竖直居中
查看>>
Java中调用ImageJ,与直接使用ImageJ软件处理所得图片黑白颠倒的问题
查看>>
解决使用ployfit拟合曲线得到折线图(不够光滑)的问题
查看>>
ImageDataGenerator读取的数据集转Numpy array
查看>>
Python查看函数源码
查看>>
保存Shap生成的神经网络解释图(shap.image_plot)
查看>>