LeetCode題解(面試02.08):尋找連結串列與環的交點(Python)

長行發表於2020-11-14

題目:原題連結(中等)

標籤:連結串列、雙指標

解法時間複雜度空間複雜度執行用時
Ans 1 (Python) O ( N ) O(N) O(N) O ( 1 ) O(1) O(1)64ms (62.98%)
Ans 2 (Python)
Ans 3 (Python)

解法一:

class Solution:
    def detectCycle(self, head: ListNode) -> ListNode:
        if not head:
            return None

        i1 = i2 = head

        # 快慢針尋找環
        while i2.next and i2.next.next:
            i2 = i2.next.next
            i1 = i1.next
            if i1 == i2:
                break
        else:
            return None

        # 雙指標尋找入環交點
        i3 = head
        while i1 != i3:
            i1 = i1.next
            i3 = i3.next

        return i1

相關文章