程序检查我们是否可以找到三个唯一元素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