Рубрики

Python | Найти общие элементы в трех отсортированных массивах по пересечению словаря

Учитывая три массива, отсортированные в неубывающем порядке, выведите все общие элементы в этих массивах.

Примеры:

Input:  ar1 = [1, 5, 10, 20, 40, 80]
        ar2 = [6, 7, 20, 80, 100]
        ar3 = [3, 4, 15, 20, 30, 70, 80, 120]
Output: [80, 20]

Input:  ar1 = [1, 5, 5]
        ar2 = [3, 4, 5, 5, 10]
        ar3 = [5, 5, 10, 20]
Output: [5, 5]

У нас есть решение этой проблемы, пожалуйста, обратитесь к ссылке Найти общие элементы в трех отсортированных массивах . Мы можем быстро решить эту проблему в python, используя пересечение словарей. Подход прост,

  1. Сначала преобразуйте все три списка в словари с элементами в качестве ключей и их частотами в качестве значения, используя метод Counter () .
  2. Теперь выполните операцию пересечения для трех словарей, в результате мы получим словарь, имеющий общие элементы среди трех списков массивов с их частотами.

# Функция поиска общих элементов в трех
# отсортированные массивы

from collections import Counter

  

def commonElement(ar1,ar2,ar3):

     # сначала конвертировать списки в словарь

     ar1 = Counter(ar1)

     ar2 = Counter(ar2)

     ar3 = Counter(ar3)

     

     # выполнить операцию пересечения

     resultDict = dict(ar1.items() & ar2.items() & ar3.items())

     common = []

      

     # перебрать результирующий словарь

     # и собирать общие элементы

     for (key,val) in resultDict.items():

          for i in range(0,val):

               common.append(key)

  

     print(common)

  
# Драйверная программа

if __name__ == "__main__":

    ar1 = [1, 5, 10, 20, 40, 80]

    ar2 = [6, 7, 20, 80, 100]

    ar3 = [3, 4, 15, 20, 30, 70, 80, 120]

    commonElement(ar1,ar2,ar3)

Выход:

[80, 20]

Рекомендуемые посты:

Python | Найти общие элементы в трех отсортированных массивах по пересечению словаря

0.00 (0%) 0 votes