Commit c74a40b

mo khan <mo@mokhan.ca>
2022-08-29 20:39:01
use xor to find unique #
1 parent 44e8488
Changed files (1)
misc
find-non-duplicate-number
misc/find-non-duplicate-number/main.rb
@@ -0,0 +1,28 @@
+#/usr/bin/env ruby
+
+def assert_equal(x, y)
+  raise [x, y].inspect unless x == y
+end
+
+def find_non_duplicate(items)
+  counts = Hash.new(0)
+
+  items.each do |item|
+    counts[item] += 1
+    if counts[item].even?
+      counts.delete(item)
+    end
+  end
+
+  counts.keys[0]
+end
+
+def find_non_duplicate(items)
+  result = 0
+  items.each do |item|
+    result = result ^ item
+  end
+  result
+end
+
+assert_equal(1, find_non_duplicate([4, 3, 2, 4, 1, 3, 2]))