来道面试题
2018-03-24 本文已影响0人
不_一
如图
给定一个数组arr和一个常数d,实现一个函数,计算出在数组arr中,所有距离为d的元素数的数量,并计算出函数执行的时间复杂度和空间复杂度.
例如:
arr = [3, 5, 8, 7, 8, 10]
d = 2
abs(arr[0]-arr[1]) = d
abs(arr[1]-arr[3]) = d
abs(arr[2]-arr[5]) = d
abs(arr[4]-arr[5]) = d
一共四组,返回结果4
b) 计算出函数执行的时间复杂度和空间复杂度
c)对你写的函数写完整并有效的单元测试
l = [3, 5, 8, 7, 8, 10]
d = 2
l.sort()
i = 0
j = 1
cnt = 0
n = 0
while i <= len(l) - 1 and j <= len(l) - 1:
if i < j and abs(l[i] - l[j]) == d:
cnt += 1
if l[i] == l[i + 1]:
i += 1
else:
j += 1
continue
elif i < j and abs(l[i] - l[j]) > d:
i += 1
elif i < j and abs(l[i] - l[j]) < d:
j += 1
if i == j:
j += 1
print(cnt)