我正在尝试在具有特定差异的数字列表中查找对数。说,用清单
1 2 3 4 5
和差异目标'2',我想打印数字'3',因为这个序列中有3对差异为'2'。但是,我的代码非常慢 - 它重复计算所有对,所以我最终需要将我的解决方案除以 2 才能得到答案。有没有办法在不重复计算的情况下完成同样的任务?我很欣赏你可能有的任何见解。谢谢!代码打印在下面
import sys
def main():
solutions=0
pairs=[]
for i in xrange(len(numbers)):
for j in xrange(len(numbers)):
if i!=j:
pairs.append([numbers[i], numbers[j]])
for pair in pairs:
if abs(pair[0]-pair[1])==k:
solutions+=1
else:
continue
return solutions/2
if __name__ == '__main__':
lines=sys.stdin.readlines()
n,k=map(int, lines[0].strip().split())
numbers=map(int, lines[1].strip().split())
print main()