程序检查我们是否可以找到三个唯一元素ose sum是否等于k Python

假设我们有一个称为nums的数字的列表,另一个值为k,我们必须检查是否可以在列表中找到三个和的总和为k的唯一元素。

因此,如果输入像nums = [11,4,6,10,5,1] k = 20,则输出将为True,因为我们有总和为20的数字[4,6,10]。

为了解决这个问题,我们将遵循以下步骤-

  • 排序列表编号

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

  • 当l <r − 1,而

    • 如果nums [m]> t,则

    • 如果nums [m]与t相同,则

    • r:= r − 1

    • 从循环中出来

    • 返回True

    • l:= l + 1

    • 从循环中出来

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

    • 如果nums [r − 1] <t,则

    • 对于l +1至r范围内的m

    • 返回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
    猜你喜欢