Python 中检查排序数组是否可以分成对,且每对的和为 k


假设我们有一个数字数组和另一个数字 k,我们需要检查给定的数组是否可以分成几对,使得每对的和都为 k。

因此,如果输入类似于 arr = [1, 2, 3, 4, 5, 6],k = 7,则输出将为 True,因为我们可以取 (2, 5)、(1, 6) 和 (3, 4) 这样的对。

为了解决这个问题,我们将遵循以下步骤:

  • n := arr 的大小
  • 如果 n 为奇数,则
    • 返回 False
  • low := 0,high := n - 1
  • 当 low < high 时,执行
    • 如果 arr[low] + arr[high] 不等于 k,则
      • 返回 False
    • low := low + 1
    • high := high - 1
  • 返回 True

让我们看看以下实现,以便更好地理解:

示例

 在线演示

def solve(arr, k):
   n = len(arr)
   if n % 2 == 1:
      return False
   low = 0
   high = n - 1
   while low < high:
      if arr[low] + arr[high] != k:
         return False
      low = low + 1
      high = high - 1
   return True
arr = [1, 2, 3, 4, 5, 6]
k = 7
print(solve(arr, k))

输入

[1, 2, 3, 4, 5, 6], 7

输出

True

更新于: 2020-12-29

86 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告