LeetCode/136. SingleNumber

Summary

Easy question, asking do you know data type dictionary.

Solutions

My Solution

public int Solution(int[] nums)
{
    var dict = new Dictionary<int, int>();

    for (int i = 0; i < nums.Length; i++)
    {
        if (!dict.ContainsKey(nums[i])) dict[nums[i]] = 1;
        else dict[nums[i]]++;
    }
    return dict.Where(x => x.Value == 1).FirstOrDefault().Key;
}

Best Solution

Even though solving this question with dictionary is a one way, there is another way to solve this problem. It is using XOR. Because every element appears twice except for one. So XOR will remove bits. It is interesting to think in this way.

// Best Solution, using XOR
int singleNumber(int[] nums)
{
    int result = 0;
    for (int i = 0; i < nums.Length; i++)
    {
        result ^= nums[i];
    }
    return result;
}