假设我们有一个称为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