summaryrefslogtreecommitdiff
path: root/2020/08/18/main.rb
blob: f5ffc9def7a43d09f17f2cda0af7eb10606f6934 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
def assert_equal(x, y)
  raise [x, y].inspect unless x == y
end

class Solution
  # time: O(n)
  # space: O(n)
  def self.run(items)
    cache = Hash.new { |h, k| h[k] = 2 }

    for i in items
      cache[i] -= 1
    end

    cache.values.find { |value| value > 0 }
  end

  # time: O(n)
  # space: O(1) assumes non negative numbers
  def self.run(items)
    cache = Array.new(items.size, 2)

    for i in items
      cache[i] -= 1
    end

    for i in (0...items.size)
      return i if cache[i] % 2 != 0
    end
  end
end

assert_equal 1, Solution.run([4, 3, 2, 4, 1, 3, 2])
puts 'Yay!'