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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP