Python程式:檢查是否存在三個唯一元素其和等於k


假設我們有一個名為nums的數字列表和另一個值k,我們需要檢查是否可以在列表中找到三個唯一元素,其和等於k。

例如,如果輸入為nums = [11, 4, 6, 10, 5, 1] k = 20,則輸出為True,因為我們有數字[4, 6, 10],其和為20。

為了解決這個問題,我們將遵循以下步驟:

  • 對列表nums進行排序

  • l := 0, r := nums的大小 - 1

  • 當l < r - 1時,執行以下操作:

    • t := k - nums[l] - nums[r]

    • 如果nums[r - 1] < t,則

      • l := l + 1

      • 跳出迴圈

    • 對於m在l + 1到r的範圍內,執行以下操作:

      • 如果nums[m] > t,則

        • r := r - 1

        • 跳出迴圈

      • 如果nums[m]等於t,則

        • 返回True

  • 返回False

讓我們看看下面的實現以更好地理解:

示例

線上演示

class Solution:
   def solve(self, nums, k):
      nums.sort()
      l, r = 0, len(nums) − 1
      while l < r − 1:
         t = k − nums[l] − nums[r]
         if nums[r − 1] < t:
            l += 1
            continue
         for m in range(l + 1, r):
            if nums[m] > t:
               r −= 1
               break
            if nums[m] == t:
               return True
      return False
ob1 = Solution()
nums = [11, 4, 6, 10, 5, 1]
k = 20
print(ob1.solve(nums, k))

輸入

[11, 4, 6, 10, 5, 1], 20

輸出

True

更新於:2020年10月21日

69 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.