# 142.环形链表 II

# 解题思路

遍历所有的节点,并把访问过的节点放入一个哈希表中,如果遍历到已经访问过的节点,则说明存在环路。

var detectCycle = function (head) {
  if (!head || !head.next) return null

  let visited = new WeakMap()

  visited.set(head, 1)

  let ret = null
  let curr = head.next

  while (curr.next) {
    if (visited.has(curr)) {
      ret = curr
      break
    } else {
      visited.set(curr, 1)
    }

    curr = curr.next
  }

  return ret
}

另外官网还提供了一种方法,使用快慢指针的解题思路 (opens new window)

# 参考