【发布时间】:2016-11-18 02:09:42
【问题描述】:
给定array/list 的integers,输出重复项。
另外,我真正在寻找什么:哪些解决方案具有最佳的时间性能?最佳空间表现?是否有可能同时拥有最佳时间和最佳空间性能?只是好奇。谢谢!
例如:给定列表[4,1,7,9,4,5,2,7,6,5,3,6,7],答案将是[4,7,6,5](输出顺序无关紧要)。
我在python 中写下了我的解决方案。
这是我使用哈希和二进制搜索编写的一个解决方案。
def binarySearch(array, number):
start = 0
end = len(array)
mid = (end + start) // 2
while (end > start):
mid = start + (end - start) // 2
if array[mid] == number:
return (mid, True)
elif number > array[mid]:
if start == mid:
return (mid + 1, False)
start = mid
else:
end = mid
return (mid, False)
def findDuplicatesWithHash(array):
duplicatesHash = {}
duplicates = []
for number in array:
try:
index,found = binarySearch(duplicates, number)
if duplicatesHash[number] == 0 and not found:
duplicates.insert(index, number)
except KeyError as error:
duplicatesHash[number] = 0
duplicatesSorted = sorted(duplicates, key=lambda tup: tup)
return duplicatesSorted
【问题讨论】:
-
[1,1,2,3,4,4,5,5,5,6] - 这个输入数组的期望输出是什么?
-
"是否可以同时拥有最佳时间和最佳空间性能?"好问题!可能没有;)
-
@wookie919: [1,4,5]
标签: python arrays algorithm list sorting