在Python中创建数据结构以检查对数和是否与值相同的程序

在Python中创建数据结构以检查对数和是否与值相同的程序

假设我们想要创建一个有两种方法的数据结构 –

  • 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插入multiple
  • 否则,
    • 将val插入nums中。
  • 定义一个函数find()。这将获取val
  • 对于nums中的每个n,请执行以下操作:
    • 如果n+n与val相同,则
      • 当n在multiple中时,返回true
    • 否则,当val-n在nums中时,则
      • 返回True
  • 返回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教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程