问题:给定N个整数[N <= 10 ^ 5],计算具有K差异的整数对.[K> 0和K <1e9].N个整数中的每一个将大于0且至少K远离2 ^ 31-1(一切都可以用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)
Run Code Online (Sandbox Code Playgroud)