Сложность: easy
Даны три целочисленных массива arr1, arr2 и arr3, отсортированных в строго возрастающем порядке. Верните отсортированный массив, содержащий только те целые числа, которые присутствуют во всех трех массивах.
Пример:
Input: arr1 = [1,2,3,4,5], arr2 = [1,2,5,7,9], arr3 = [1,3,4,5,8]
Output: [1,5]
Explanation: Only 1 and 5 appeared in the three arrays.
👨💻 Алгоритм:
1⃣Инициализируйте counter как TreeMap для записи чисел, которые появляются в трех массивах, и количество их появлений.
2⃣Пройдитесь по массивам arr1, arr2 и arr3, чтобы посчитать частоты появления элементов.
3⃣Итерация через counter, чтобы найти числа, которые появляются три раза, и вернуть их в виде отсортированного массива.
😎 Решение:
class Solution {
public List<Integer> arraysIntersection(int[] arr1, int[] arr2, int[] arr3) {
List<Integer> ans = new ArrayList<>();
Map<Integer, Integer> counter = new TreeMap<>();
for (Integer e: arr1) {
counter.put(e, counter.getOrDefault(e, 0) + 1);
}
for (Integer e: arr2) {
counter.put(e, counter.getOrDefault(e, 0) + 1);
}
for (Integer e: arr3) {
counter.put(e, counter.getOrDefault(e, 0) + 1);
}
for (Integer item: counter.keySet()) {
if (counter.get(item) == 3) {
ans.add(item);
}
}
return ans;
}
}Ставь 👍 и забирай 📚 Базу знаний