您的位置:首页 > 其它

LintCode_103_带环链表 II

2016-04-19 23:25 85 查看
给定一个链表,如果链表中存在环,则返回到链表中环的起始节点的值,如果没有环,返回null。

您在真实的面试中是否遇到过这个题?

Yes

样例

给出 -21->10->4->5, tail connects to node index 1,返回10

挑战

不使用额外的空间
刚刚写完带环链表时搜了些扩展 结果剧透了自己一波

/**
* Definition for ListNode.
* public class ListNode {
*     int val;
*     ListNode next;
*     ListNode(int val) {
*         this.val = val;
*         this.next = null;
*     }
* }
*/
public class Solution {
/**
* @param head: The first node of linked list.
* @return: The node where the cycle begins.
*           if there is no cycle, return null
*/
public ListNode detectCycle(ListNode head) {
// write your code here
ListNode fast = head;
ListNode slow = head;
ListNode result = null;
while(slow != null && fast != null && fast.next != null){
fast = fast.next.next;
slow = slow.next;
if(fast == slow){
result = fast;
break;
}
}
while(result != null){
if(result == head){
return result;
}
result = result.next;
head   =   head.next;
}
return null;

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: