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
- 当 i < j 时,执行以下操作:
- cur_sum := nums[i] + nums[j]
- 如果cur_sum与k相同,则
- 返回True
- 否则,当cur_sum < k时,则
- i := i + 1
- 否则,
- j := j - 1
- 返回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
广告