Single Number
Given an array of integers, every element appears twice except for one. Find that single one. Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
A tricky solution:
(defn single-number
[array]
(reduce (fn [a b] (bit-xor a b)) array))
(single-number [1 1 2 3 3 4 4])
Bit manipulation
- n ^ n = 0
- 0 ^ n = n
=> 1 ^ 1 ^ 2 ^ 3 ^ 3 = 2