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

更新於: 2021年10月14日

530 次檢視

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.