Intersection of Two Arrays
https://leetcode.com/problems/intersection-of-two-arrays/description/ | Easy |
Условие
Даны два массива целых чисел nums1 и nums2. Нужно вернуть массив их пересечения. Каждый элемент в результате должен быть уникальным, и порядок возвращаемых элементов может быть произвольным.
Примеры
Input:
nums1 = [1, 2, 2, 1], nums2 = [2, 2]Output:
[2]
Input:
nums1 = [4, 9, 5], nums2 = [9, 4, 9, 8, 4]Output:
[9, 4]Explanation:
Результат может быть в любом порядке: [4, 9] также является допустимым ответом.
Решение
fun intersection(nums1: IntArray, nums2: IntArray): IntArray {
val result = mutableListOf<Int>() // Создаем список для хранения результата
val uniqueNums1 = mutableSetOf<Int>() // Множество для хранения уникальных элементов из nums1
// Заполняем множество уникальными значениями из nums1
for (num in nums1) {
uniqueNums1.add(num)
}
// Проверяем, какие элементы из nums2 присутствуют в uniqueNums1 и добавляем их в результат
for (num in nums2) {
if (uniqueNums1.contains(num)) {
result.add(num) // Добавляем элемент в результат
uniqueNums1.remove(num) // Удаляем из множества, чтобы избежать дубликатов
}
}
// Преобразуем результат в массив и возвращаем
return result.toIntArray()
}
Временная сложность
O(n + m), где n — длина nums1, а m — длина nums2, так как мы проходим по каждому массиву один раз.
Пространственная сложность
O(n), так как требуется множество для хранения уникальных элементов из nums1.