假设我们有一个称为nums的数字列表和一个值k,我们必须检查列表中是否有四个唯一元素加起来为k。
因此,如果输入像nums = [11,4,6,10,5,1] k = 25,那么输出将为True,因为我们有[4,6,10,5]的总和为25。
为了解决这个问题,我们将遵循以下步骤-
排序列表编号
n:= nums的大小
对于i在0到n − 4的范围内,执行
l:= j + 1,h:= nums − 1的大小
summ:= nums [i] + nums [j] + nums [l] + nums [h]
如果求和与k相同,则
否则,求和<k,则
除此以外,
返回True
l:= l + 1
h:= h − 1
当l <h时
对于范围i +1至n − 3的j,做
返回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