博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linked-list-cycle
阅读量:5092 次
发布时间:2019-06-13

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

/**

*
* @author gentleKay
* Given a linked list, determine if it has a cycle in it.
* Follow up:
* Can you solve it without using extra space?
*
* 给定一个链表,确定它是否有一个循环。
* 跟进:
* 你能在不使用额外空间的情况下解决它吗?
*/

/** *  * @author gentleKay * Given a linked list, determine if it has a cycle in it. * Follow up: * Can you solve it without using extra space? *  * 给定一个链表,确定它是否有一个循环。 * 跟进: * 你能在不使用额外空间的情况下解决它吗? */public class Main10 {	public static void main(String[] args) {		ListNode head = new ListNode(1);		head.next = new ListNode(2);		head.next.next = new ListNode(4);		head.next.next.next = new ListNode(6);		head.next.next.next.next = head;		System.out.println(Main10.hasCycle(head));	}		static class ListNode {		int val;		ListNode next;		ListNode(int x) {			val = x;			next = null;		}	}		public static boolean hasCycle(ListNode head) {		if (head == null) {			return false;		}		ListNode fast = head; // 两倍速度走		ListNode slow = head; // 一倍速度走   如果是一个循环的话,fast 肯定会与 slow 在相遇 ,并且相等。 如果不是循环的话,那 fast.next 就肯定会先 等于 null;        while (fast != null && fast.next != null) {  // 所以一定要判断两倍速度走的时候的下一个 fast.next 不为null        	fast = fast.next.next;        	slow = slow.next;        	if (fast == slow) {        		return true;        	}        }        return false;    }}

  

转载于:https://www.cnblogs.com/strive-19970713/p/11238137.html

你可能感兴趣的文章
微信页面关于点击按钮关注公众号放到链接里无关注按钮
查看>>
python 字典处理的一些坑
查看>>
构建oracle12c的Docker镜像
查看>>
用户权限命令(chmod,chown,umask,lsattr/chattr)
查看>>
Maven详解
查看>>
Linux系统中‘dmesg’命令处理故障和收集系统信息的7种用法
查看>>
数据结构 : Hash Table [II]
查看>>
面向对象的小demo
查看>>
获取地址栏参数
查看>>
java之hibernate之helloworld
查看>>
微服务之初了解(一)
查看>>
Iterator invalidation(迭代器失效)
查看>>
GDOI DAY1游记
查看>>
OpenGL(三)MFC中应用OpenGL的两个类
查看>>
小白眼中的git操作
查看>>
小米笔试题--数组移动
查看>>
php gd实现简单图片验证码与图片背景文字水印
查看>>
仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'XXX'中的标识列指定显式值。...
查看>>
winform中的小技巧【自用】
查看>>
winform DataGridView的虚模式填充,CellValueNeeded事件的触发条件
查看>>