[leetcode] Linked List Cycle II

来源:互联网 发布:以色列 巴勒斯坦 知乎 编辑:程序博客网 时间:2024/06/05 10:52

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 = Noneclass 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

代码:


0 0
原创粉丝点击