Single Number
https://leetcode.com/problems/single-number/ | Easy |
Условие
Дано число, встречающееся в массиве, и все числа в массиве, кроме одного, встречаются ровно дважды. Найдите число, которое встречается только один раз.
Примеры
Input:
[2, 2, 1]Output:
1
Input:
[4, 1, 2, 1, 2]Output:
4
Решение
fun singleNumber(nums: IntArray): Int {
var result = 0
// Используем операцию XOR для нахождения числа, которое встречается только один раз.
// XOR (исключающее ИЛИ) с одинаковыми числами приводит к нулю.
// XOR (исключающее ИЛИ) с нулем оставляет число без изменений.
nums.forEach { num ->
result = result xor num
}
return result
}
Временная сложность
O(n), где n — количество элементов в массиве. Мы проходим по массиву один раз, выполняя операцию XOR.
Пространственная сложность
O(1). Используется фиксированное количество дополнительной памяти для хранения переменной result.