def minDis(arr, num1, num2):
if arr == None or len(arr) <= 0 :
print('参数不合理')
return 2**32
result1 = lastPos1 = -1
result2 = lastPos2 = -1
result = 2**30
i = 0
lens = len(arr)
while i<lens :
if arr[i] == num1 :
lastPos1 = i
if (lastPos2 >= 0) and (result > abs(lastPos1-lastPos2)):
result = abs(lastPos1 - lastPos2)
result1 = i
result2 = lastPos2
if arr[i] == num2 :
lastPos2 = i
if (lastPos1 >= 0) and (result > abs(lastPos2-lastPos1)):
result = abs(lastPos1-lastPos2)
result1 = lastPos1
result2 = i
i += 1
return result1, result2, result
if __name__ == '__main__':
arr = [4,5,6,4,7,4,6,4,7,8,5,6,4,3,10,8]
num1 = 4
num2 = 8
print(minDis(arr, num1, num2))
时间复杂度O(N)