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.