122人阅读 评论(0)

## 题目描述

Given a linked list, return the node where the cycle begins. If there is no cycle, return null.
Can you solve it without using extra space?

1. 如何判断链表存在环

2. 找出环的起始结点

3. 环的长度和链表总长度

package sxd.learn.java.leetcode;

/**
*
* @author lab
* 2016/5/30
* Given a linked list, return the node where the cycle begins. If there is no cycle, return null.
*/
public class Leetcode9 {

public static void main(String[] args) {
// TODO Auto-generated method stub
ListNode node1 = new ListNode(1);
ListNode node2 = new ListNode(2);
ListNode node3 = new ListNode(3);
ListNode node4 = new ListNode(4);
ListNode node5 = new ListNode(5);
ListNode node6 = new ListNode(6);

node1.next = node2;
node2.next = node3;
node3.next = node4;
node4.next = node5;
node5.next = node6;
node6.next = node3;

System.out.println(detectCycle(node1).val);
}

public static ListNode detectCycle(ListNode head) {
return null;

boolean isCycle = false;

while(fast.next != null && fast.next.next != null){
fast = fast.next.next;
slow = slow.next;
if(slow.equals(fast)){
isCycle = true;
break;
}
}

if(isCycle){
while(!fast.equals(slow)){
fast = fast.next;
slow = slow.next;
}
return fast;
}else{
return null;
}

}
}

0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：15762次
• 积分：732
• 等级：
• 排名：千里之外
• 原创：57篇
• 转载：8篇
• 译文：1篇
• 评论：0条
文章分类