检查Python中已排序列表中两个数字的总和是否达到k
假设我们有一个名为nums的数字列表,其中nums的元素按升序排序。 我们还有另一个值k,必须检查列表中任何两个元素是否相加达到k。 数字也可以是负数或0。 我们必须在占用常量空间的情况下解决此问题。
因此,如果输入类似于nums = [-8,-3,2,7,9] k = 4,则输出将为True,因为如果我们取7和-3,则总和为7 +(-3)= 4,这与k相同。
为了解决这个问题,我们将遵循以下步骤−
- i:= 0
- j:= nums的大小 – 1
- while i < j,do
- cur_sum:= nums [i] + nums [j]
- 如果cur_sum与k相同,则
- return True
- 否则当cur_sum < k时,则
- i:= i + 1
- 否则,
- j:= j – 1
- return False
示例
让我们看下面的实现,以便更好地理解−
def solve(nums, k):
i = 0
j = len(nums) - 1
while i < j:
cur_sum = nums[i] + nums[j]
if cur_sum == k:
return True
elif cur_sum < k:
i += 1
else:
j -= 1
return False
nums = [-8,-3,2,7,9]
k = 4
print(solve(nums,k))
输入
[-8,-3,2,7,9],4
输出
True