美文网首页
来道面试题

来道面试题

作者: 不_一 | 来源:发表于2018-03-24 19:41 被阅读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)

相关文章

网友评论

      本文标题:来道面试题

      本文链接:https://www.haomeiwen.com/subject/ghpffftx.html