Python程式檢查列表中是否存在四個元素之和等於k


假設我們有一個名為nums的數字列表和一個值k,我們需要檢查列表中是否存在四個唯一元素的和等於k。

因此,如果輸入類似於nums = [11, 4, 6, 10, 5, 1] k = 25,則輸出將為True,因為我們有[4, 6, 10, 5],其和為25。

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

  • 對列表nums進行排序

  • n := nums的大小

  • 對於i從0到n-4,執行:

    • 對於j從i+1到n-3,執行:

      • l := j+1, h := nums的大小-1

        • 當l < h時,執行:

          • summ := nums[i] + nums[j] + nums[l] + nums[h]

          • 如果summ等於k,則:

            • 返回True

          • 否則,如果summ < k,則:

            • l := l + 1

          • 否則:

            • h := h - 1

  • 返回False

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

示例

 線上演示

class Solution:
   def solve(self, nums, k):
      nums.sort()
      n = len(nums)
      for i in range(n - 3):
         for j in range(i + 1, n - 2):
            l, h = j + 1, len(nums) - 1
            while l < h:
               summ = nums[i] + nums[j] + nums[l] + nums[h]
               if summ == k:
                  return True
               elif summ < k:
                  l += 1
               else:
                  h −= 1
         return False
ob1 = Solution()
nums = [11, 4, 6, 10, 5, 1]
k = 25
print(ob1.solve(nums, k))

輸入

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

輸出

True

更新於: 2020年10月21日

74 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.