Сложность: easy
Даны два целочисленных массива nums1 и nums2. Верните массив их пересечения. Каждый элемент в результате должен появляться столько раз, сколько он встречается в обоих массивах. Вы можете вернуть результат в любом порядке.
Пример:
Input: nums1 = [1,2,2,1], nums2 = [2,2]
Output: [2,2]
👨💻 Алгоритм:
1⃣Подсчет частоты элементов:
Используйте хеш-таблицу или словарь для подсчета количества вхождений каждого элемента в nums1.
2⃣Нахождение пересечения:
Пройдите по элементам nums2, и если элемент присутствует в хеш-таблице из шага 1 и его счетчик больше нуля, добавьте этот элемент в результат и уменьшите счетчик.
3⃣Возврат результата:
Верните массив пересечения.
😎 Решение:
public class Solution {
public int[] Intersect(int[] nums1, int[] nums2) {
Dictionary<int, int> counts = new Dictionary<int, int>();
List<int> result = new List<int>();
foreach (int num in nums1) {
if (counts.ContainsKey(num)) {
counts[num]++;
} else {
counts[num] = 1;
}
}
foreach (int num in nums2) {
if (counts.ContainsKey(num) && counts[num] > 0) {
result.Add(num);
counts[num]--;
}
}
return result.ToArray();
}
}Ставь 👍 и забирай 📚 Базу знаний