master
 1def assert_equal(x, y)
 2  raise [x, y].inspect unless x == y
 3end
 4
 5class Solution
 6  # time: O(n)
 7  # space: O(n)
 8  def self.run(items)
 9    cache = Hash.new { |h, k| h[k] = 2 }
10
11    for i in items
12      cache[i] -= 1
13    end
14
15    cache.values.find { |value| value > 0 }
16  end
17
18  # time: O(n)
19  # space: O(1) assumes non negative numbers
20  def self.run(items)
21    cache = Array.new(items.size, 2)
22
23    for i in items
24      cache[i] -= 1
25    end
26
27    for i in (0...items.size)
28      return i if cache[i] % 2 != 0
29    end
30  end
31end
32
33assert_equal 1, Solution.run([4, 3, 2, 4, 1, 3, 2])
34puts 'Yay!'