问题:给定 N 个整数 [N<=10^5],计算相差 K 的整数对的总数。[K>0 和 K<1e9]。N 个整数中的每一个都将大于 0,并且距离 2^31-1 至少为 K(一切都可以用 32 位整数完成)。
第一行包含 N & K(整数)。第二行包含 N 个集合。确保所有 N 个数字都是不同的。
现在问题来自hackerrank。我得到了这个问题的解决方案,但它不满足所有示例测试用例的时间限制。我不确定是否可以使用另一种算法,但我没有想法。如果有人花点时间检查我的代码并给出一两个提示,我将不胜感激。
temp = input()
temp = temp.split(" ")
N = int(temp[0])
K = int(temp[1])
num_array = input()
num_array = num_array.split(" ")
diff = 0
pairs= 0
i = 0
while(i < N):
num_array[i] = int(num_array[i])
i += 1
while(num_array != []):
j = 0
while(j < (len(num_array)-1)):
diff = abs(num_array[j+1] - num_array[0])
if(diff == K):
pairs += 1
j += 1
del num_array[0]
if(len(num_array) == 1):
break
print(pairs)