📅  最后修改于: 2023-12-03 14:58:30.364000             🧑  作者: Mango
这道题目来自2015年的计算机科学GATE考试套装2的第51题。
题目要求我们实现一个函数,该函数接收一个排序的整数数组和一个整数n作为参数,并返回一个布尔值,指示是否可以从给定数组中选择两个不同的元素,使它们的和等于n。
arr = [1, 2, 3, 4, 5]
n = 7
True
在给定的示例中,可以选择数字2和5,它们的和等于7,因此返回True。
这道题目可以通过使用两个指针来解决。我们初始化两个指针i和j,分别指向数组的头和尾。然后,我们循环向内收缩指针,直到i和j相遇或找到两个元素的和等于n。
具体步骤如下:
以下是使用Python编写的代码片段:
def has_sum(arr, n):
i = 0
j = len(arr) - 1
while i < j:
total = arr[i] + arr[j]
if total == n:
return True
elif total > n:
j -= 1
else:
i += 1
return False
你可以按照以下方式调用函数:
arr = [1, 2, 3, 4, 5]
n = 7
result = has_sum(arr, n)
print(result) # True
以上是解决这道题目的完整描述,算法思路以及代码实现。希望对你理解这道题目有所帮助!