103. 帶環連結串列 II
阿新 • • 發佈:2020-08-09
103.帶環連結串列 II
中文English給定一個連結串列,如果連結串列中存在環,則返回到連結串列中環的起始節點,如果沒有環,返回null。
樣例
樣例 1:
輸入:null,no cycle
輸出:no cycle
解釋:
連結串列為空,所以沒有環存在。
樣例 2:
輸入:-21->10->4->5,tail connects to node index 1
輸出:10
解釋:
最後一個節點5指向下標為1的節點,也就是10,所以環的入口為10。
挑戰
不使用額外的空間
輸入測試資料(每行一個引數)如何理解測試資料?hashmap解法
儲存訪問過的id地址,如果已經訪問過,說明該節點剛好是環的起點,返回,否則走到None,最終返回None
""" Definition of ListNode class ListNode(object): def __init__(self, val, next=None): self.val = val self.next = next """ class Solution: """ @param head: The first node of linked list. @return: The node where the cycle begins. if there is no cycle, return null """def detectCycle(self, head): # write your code here #帶環的話,說明id地址剛好重複,則返回,否則的話返回null if not head: return None hashmap = {} while head: if (id(head) not in hashmap): hashmap[id(head)] = True else:return head head = head.next return None