Single Number

Problem

Given a non-empty array of integers nums, every element appears twice except for one. Find that single one.

You must implement a solution with a linear runtime complexity and use only constant extra space.

Example 1:

Input: nums = [2,2,1]
Output: 1
Example 2:

Input: nums = [4,1,2,1,2]
Output: 4
Example 3:

Input: nums = [1]
Output: 1

Constraints:

  • 1 <= nums.length <= 3 * 10^4
  • -3 10^4 <= nums[i] <= 3 10^4
  • Each element in the array appears twice except for one element which appears only once.

Solution

Relies on that xor trick. Related.

class Solution {
    public int singleNumber(int[] nums) {
        var counter = 0;
        for (var n : nums) {
            counter ^= n;
        }
        return counter;
    }
}

Recent posts from blogs that I like

Brushstrokes: Paul Signac

Initially he applied coarser dots on areas of more even colour, used simultaneous colour contrast, then his blobs grew to become patches of paint resembling the tesserae of mosaics.

via The Eclectic Light Company

Conceptual integrity and counting lines of code

via Simon Willison

Good writing is obvious, not original

When you write, you should try to say things that are obviously true, and spend very little time worrying about whether you’re being original. Ironically, this is the best way to do truly original writing.

Every important idea has been discussed already. I learned this in grad school for philosophy1...

via Sean Goedecke