27 lines
516 B
Ruby
27 lines
516 B
Ruby
# Definition for singly-linked list.
|
|
# class ListNode
|
|
# attr_accessor :val, :next
|
|
# def initialize(val)
|
|
# @val = val
|
|
# @next = nil
|
|
# end
|
|
# end
|
|
|
|
# @param {ListNode} head
|
|
# @return {ListNode}
|
|
|
|
require 'set'
|
|
|
|
def detectCycle(head)
|
|
def detectCycleRec(node, seen)
|
|
if node == nil then
|
|
return node
|
|
elsif seen.add?(node) == nil then
|
|
return node
|
|
end
|
|
|
|
return detectCycleRec(node.next, seen)
|
|
end
|
|
|
|
detectCycleRec(head, Set.new)
|
|
end
|