Учитывая три массива, отсортированные в неубывающем порядке, выведите все общие элементы в этих массивах.
Примеры:
Input:
ar1[] = {1, 5, 10, 20, 40, 80}
ar2[] = {6, 7, 20, 80, 100}
ar3[] = {3, 4, 15, 20, 30, 70, 80, 120}
Output: 20, 80Input:
ar1[] = {1, 5, 5}
ar2[] = {3, 4, 5, 5, 10}
ar3[] = {5, 5, 10, 20}
Output: 5, 5
Простое решение — сначала найти пересечение двух массивов и сохранить пересечение во временном массиве, а затем найти пересечение третьего массива и временного массива.
Временная сложность этого решения составляет O (n1 + n2 + n3), где n1, n2 и n3 — размеры ar1 [], ar2 [] и ar3 [] соответственно.
Приведенное выше решение требует дополнительного пространства и двух циклов, мы можем найти общие элементы, используя один цикл и без дополнительного пространства. Идея похожа на пересечение двух массивов . Подобно циклу двух массивов, мы запускаем цикл и пересекаем три массива.
Пусть текущий элемент, пройденный в ar1 [], равен x, в ar2 [] — y, а в ar3 [] — z. Мы можем иметь следующие случаи внутри цикла.
- Если x, y и z одинаковы, мы можем просто напечатать любой из них как общий элемент и двигаться вперед во всех трех массивах.
- Иначе если х
- Иначе, если x> z и y> z), мы можем просто двигаться вперед в ar3 [], так как z не может быть общим элементом.
Ниже приведен пробный запуск вышеуказанного подхода:
Ниже приведена реализация вышеуказанного подхода:
|
Джава
|
питон
|
C #
|
PHP
|
Выход:
Common Elements are 20 80
Временная сложность вышеуказанного решения составляет O (n1 + n2 + n3). В худшем случае массив самого большого размера может иметь все маленькие элементы, а массив среднего размера — все средние элементы.
Эта статья составлена Рахулом Гуптой. Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное или хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- intersection_update () в Python для поиска общих элементов в n массивах
- Найти три ближайших элемента из заданных трех отсортированных массивов
- Генерация всех возможных отсортированных массивов из альтернативных элементов двух заданных отсортированных массивов
- Подсчитать количество общих элементов между двумя массивами, используя операции Bitset и Bitwise
- Печать необычных элементов из двух отсортированных массивов
- Найти m-е наименьшее значение в k отсортированных массивах
- Найти ближайшую пару из двух отсортированных массивов
- Найти относительное дополнение двух отсортированных массивов
- Найти количество элементов больше чем k в отсортированном массиве
- Найти пару элементов, которые меняются суммой двух массивов
- Объединить k отсортированных массивов | Набор 2 (разные размерные массивы)
- Найти отношение количества элементов в двух массивах от их индивидуального и комбинированного среднего
- Найти все уникальные пары элементов максимума и второго максимума по всем подмассивам в O (NlogN)
- Объединить k отсортированных массивов | Комплект 1
- Объединить 3 отсортированных массива
0.00 (0%) 0 votes