您的位置:首页 > 其它

[leetcode] Linked List Cycle II

2014-11-25 05:08 351 查看
Given a linked list, return the node where the cycle begins. If there is no cycle, return 
null
.

Follow up:

Can you solve it without using extra space?

转自:http://www.mysjtu.com/page/M0/S951/951294.html

思路:对于linked list cycle I, 思路很简单,快慢指针相遇则有循环。但是要找到循环的起点,就有些麻烦# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None

class Solution:
# @param head, a ListNode
# @return a list node
def detectCycle(self, head):
slow = head
fast = head
while fast != None and fast.next != None:
fast = fast.next.next
slow = slow.next
if fast != None and slow != None and fast == slow:
break
if fast == None or fast.next == None:
return None
slow = head
while fast != slow:
slow = slow.next
fast = fast.next
return fast

,具体思路参考 http://www.mysjtu.com/page/M0/S951/951294.html
代码:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode 链表 指针