我正在尝试解决这个问题:
给定一个数组a,它只包含从1到a.length范围内的数字,找出第一个重复的数字,第二次出现的数字具有最小的索引。换句话说,如果有超过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中的元素在数组中出现多次,并且第二次出现的索引最小。如果没有这样的元素,则返回-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) 它给我的错误是找不到这种称为交集的函数。
发布于 2018-05-15 14:11:52
交集运算符'&‘产生集合中的公共元素。
例如:
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
https://stackoverflow.com/questions/50343282
复制相似问题