⚙️ Найдите нечетное целое число
Напишите функцию, которая принимает массив и находит целое число, которое появляется нечетное количество раз
Подход к решению
- Можно решить с помощью ассоциативного контейнера, просто посчитав количество вхождений
- Также из за того, что нужно найти только одно число то нет необходимости хранить их все, и из-за того, что есть побитовая операция XOR, которая гарантирует, что если дважды применить её к одному и тому же числу, то получится исходное число, можно решить задачу за один проход массива
👉 Find the Odd Integer (edabit)
#junior #tasks
Решение 1
int findOdd(std::vector arr) {
std::map nums;
for (int i = 0; i < arr.size(); ++i) {
nums[arr[i]] += 1;
}
int result = 0;
for (auto num : nums) {
if (num.second % 2 != 0) {
result = num.first;
break;
}
}
return result;
}
Решение 2
int findOdd(std::vector arr) {
int number = 0;
for (auto a : arr) {
number = number ^ a;
}
return number;
}
Post #356
2.04K
- 👍 3