我正在努力解决这个问题:
给定一个仅包含1
到a.length
范围内的数字的数组a,找到第二个匹配项具有最小索引的第一个重复数字。换句话说,如果有多于1个重复的数字,则返回第二次出现的索引小于另一个出现的第二次出现的索引的数量。如果没有这样的元素,return -1
。
实施例
对于a = [2, 1, 3, 5, 3, 2]
,输出应为
firstDuplicate(a) = 3
。
有两个重复:数字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
a中的元素不止一次出现在数组中,并且第二次出现的索引最小。如果没有这样的元素,则返回-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)
它给了我错误,没有找到这样的函数叫做交集。
答案 0 :(得分:1)
交叉口运营商'&'结果集合中的常见元素。
例如
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]
阵列'我'将具有值[2,4,6]