【发布时间】:2020-02-22 08:36:21
【问题描述】:
我陷入了 Hackerrank 问题之一,问题描述如下:-
您将获得一个整数数组和一个目标值。确定差值等于目标值的数组元素对的数量。
例如,给定一个[1, 2, 3, 4] 的数组和1 的目标值,我们有三个满足条件的值:(2,1), (3,2), (4,3)。所以函数对应该返回值3。
我们必须使用以下参数实现pairs函数:-
k: an integer, the target difference
arr: an array of integers
约束:-
1> Each Integer in arr[i] will be unique and positive.
2> target k will also be positive.
由于结果错误,我的以下函数实现未能通过 18 个测试用例之一。谁能帮我调试一下这个问题:-
def binSearch(target,arr):
lower = 0
upper = len(arr)-1
while lower <= upper:
mid = int((lower + upper)/2)
if(arr[mid] == target):
return 1
elif(arr[mid] > target):
upper = mid - 1
elif(arr[mid] < target):
lower = mid + 1
return -1
def pairs(k, arr):
arr.sort()
count = 0
for i in range(len(arr)):
target = abs(arr[i] - k)
if(arr[i] == target):
pass
elif(binSearch(target,arr) == 1):
count += 1
return count
【问题讨论】:
-
target = abs(arr[i] - k)对我来说似乎不合适。假设k=7。如果 a[i] 是 3,那么目标应该是 10,但abs(arr[i] - k)是 4。 -
@user3386109 你是绝对正确的。我删除了 abs 函数,它起作用了。
标签: python algorithm debugging