Introduction Link to heading

Given a non-empty array of integers, every element appears three times except for one, which appears exactly once. Find that single one.

Note:

Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

Example 1:

Input: [2,2,3,2]
Output: 3

Example 2:

Input: [0,1,0,1,0,1,99]
Output: 99

Solution Link to heading

Simple solution:

func singleNumber(nums []int) int {

    seen := make(map[int]int)

    for _, n := range nums {
        seen[n]++
    }

    for k, v := range seen {
        if v == 1 {
            return k
        }
    }

    return 0

}

Explanation Link to heading

All we need is to track elements that we seen and find one that has counter equal 1.