Найти уникальное число
Задача:
There is an array with some numbers. All numbers are equal except for one. Try to find it!
Есть массив с несколькими числами. Все числа равны кроме одного. Попробуйте найти его(перевод авторский за качество не ручаюсь, но вроде ничего сложного)
Моя идея:
Идём по массиву и кидаем каждое число в словарь при этом если число уже встречалось то увеличиваем кол-во раз сколько оно нам встретилось и вот с этим у меня проблема, читал на метаните про dictionary и там нет, как увеличить поле значение у ключа, а если не встречалось то кидаем в словарь и поле значение устанавливаем в единицу
План В:
вложенные циклы, берём каждый символ и сравниваем с остальной частью массива, если вдруг встретился такой что один раз всего попался нам, то выходим из цикла и возвращаем этот элемент
Проблема:
первое моё решение нужно перевести в код, со вторым сам справлюсь. В задаче сказано что будут большие массивы данных и поэтому нужно озаботиться производительностью, что я и сделал когда решил воспользоваться словарём
Мой код :
private static int GetUnique(IEnumerable<int> numbers)
{
int unique = 0;
var dict = new Dictionary<int, int>();
foreach (var number in numbers)
{
if (dict.ContainsKey(number))
{
dict[number] += 1;
}
else
{
dict.Add(number, 1);
}
}
foreach (var number in dict)
{
if (number.Value == 1)
{
unique = number.Key;
}
}
return unique;
}