функция intersection () не работает python3 - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь решить эту проблему:
Учитывая массив a, который содержит только числа в диапазоне от 1 до a.length, найдите первый дубликат числа, для которого второе вхождение имеет минимальный индекс. Другими словами, если имеется более 1 дублированного числа, вернуть номер, для которого второе вхождение имеет меньший индекс, чем второе вхождение другого числа. Если таких элементов нет, return -1.

Пример

Для a = [2, 1, 3, 5, 3, 2] вывод должен быть firstDuplicate(a) = 3.

Есть 2 дубликата: числа 2 и 3. Второе вхождение 3 имеет меньший индекс, чем второе вхождение 2, поэтому ответ равен 3.

Для a = [2, 4, 3, 5, 1] вывод должен быть firstDuplicate(a) = -1.

Input/Output

[execution time limit] 4 seconds (py3)

[input] array.integer a

Guaranteed constraints:
1 ≤ a.length ≤ 105,
1 ≤ a[i] ≤ a.length.

[output] integer

Элемент в, который встречается в массиве более одного раза и имеет минимальный индекс для своего второго вхождения. Если таких элементов нет, вернуть -1.

это мой код:

import math

def firstDuplicate(a):
  set1=set() 
  set2=set()
  set1=[a]
  z = len(a)
  y=z/2
  if y%2==0:
          set2 =[a[0:y]]
  else:
          set2 = [a[0:int(y)+1]]
  c = 0   
  c = intersection(a,b)
  if c == 0 :
    return -1
  else:
      if set2[1] > set2[0]:
            return set2[1]
      else:
          return set2[0]
a=[2, 3, 3, 1, 5, 2]  

firstDuplicate(a)  

выдает ошибку, что не найдена такая функция, называемая пересечением.

1 Ответ

0 голосов
/ 15 мая 2018

Оператор пересечения '&' выводит общие элементы в наборах.

Например.

A = {0, 2, 4, 6, 8};
B = {1, 2, 3, 4, 5};
print("Intersection :", A & B)

Вывод: Пересечение: {2, 4}

Чтобы найти пересечениеиз двух массивов:

a=[2,3,4,5,6]
b=[2,4,6,8,0]
i = [x for x in a if x in b]

массив 'i' будет иметь значения [2,4,6]

...