检查排序后的数组是否可以成对分成Python,其和为k

假设我们有一个数字数组,又有另一个数字k,我们必须检查给定的数组是否可以分为几对,使得每对的总和为k。

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

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

  • n:= arr的大小

  • 如果n为奇数,则

    • 返回False

  • 低:= 0,高:= n-1

  • 从低到高,做

    • 返回False

    • 如果arr [low] + arr [high]与k不同,则

    • 低:=低+ 1

    • 高:=高-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

猜你喜欢