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 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.