1.Hash法(字典法):空间换时间
def findDup(array):
if array == None:
return -1
lens = len(array)
hashTable = dict()
i = 0
while i<lens-1 :
hashTable[i] = 0
i += 1
j = 0
while j<lens :
if hashTable[array[j]-1] == 0 :
hashTable[array[j]-1] = array[j]
else:
return array[j]
j += 1
return -1
if __name__ == '__main__':
array = [1, 3, 2, 1, 5, 4]
print(findDup(array))
时间和空间复杂度都是O(n)
2.累加求和法
def findDup(array):
if array == None:
return -1
suma = sum(array)
lens = len(array)
sumb = (lens-1)*lens/2
return int(suma - sumb)
if __name__ == '__main__':
array = [1, 3, 2, 1, 5, 4]
print(findDup(array))
时间复杂度O