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.