在 Python 中创建用于检查对和是否与值相同的数据结构的程序
pythonserver side programmingprogramming更新于 2026/1/5 8:12:17
假设我们想要创建一个具有两个方法 − 的数据结构
- add(val) 这会将值 val 添加到数据结构中
- find(val) 这会检查是否有两个元素的总和为 val
我们必须设计它以便能够即时获得结果。我们不会在每次查询时都搜索数字。
因此,如果输入类似于创建一个对象 obj 并添加几个数字 6、14、3、8、11、15,然后检查 obj.find(9)、obj.find(11)、obj.find(15),则输出将为 True、True、False,因为 9 可以由 6+3 组成,11 可以由 3+8 组成。现在数据结构中存在 15,但没有两个数字的总和与 15 相同。
为了解决这个问题,我们将遵循以下步骤 −
- 定义构造函数。
- nums := 一个新集合
- multiple := 一个新集合
- 定义一个函数 add()。这将采用 val
- 将 val 插入到多个中
- 否则,
- 将 val 插入到 nums 中
- 定义一个函数 find() 。这将采用 val
- 对于 nums 中的每个 n,执行
- 如果 n + n 与 val 相同,则
- 当 n 在多个中时返回 true
- 否则当 val - n 在 nums 中时,则
- 返回 True
- 如果 n + n 与 val 相同,则
- 返回 False
示例
让我们看看下面的实现以便更好地理解 −
class PairSumChecker: def __init__(self): self.nums = set() self.multiple = set() def add(self, val): if val in self.nums: self.multiple.add(val) else: self.nums.add(val) def find(self, val): for n in self.nums: if n + n == val: return n in self.multiple elif val - n in self.nums: return True return False obj = PairSumChecker() obj.add(6) obj.add(14) obj.add(3) obj.add(8) obj.add(11) obj.add(15) print(obj.find(9)) print(obj.find(11)) print(obj.find(15))
输入
print(obj.find(9)) print(obj.find(11)) print(obj.find(15))
输出
True True False
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

