Advertisement

算法笔记:两有序集合交

阅读量:

问题描述

有两个有序的集合A和B,在这里我们讨论的是它们各自元素之间的关系。其中每个元素都是一个范围区间,在这种情况下我们希望找到这些区间之间的重叠区域部分。例如这两个集合分别为A = { [4,8], [9,13] } 和 B = { [6,12] }时,则它们的重叠区域为C = { [6,8], [9,12] }。

建立一个集合类

我们需要设计一个集合类用于表示上面所述的区间(其中该区间内的所有元素即为通常意义上的区间端点)。为此目的, 我们创建了一个名为MySet的集合类, 该类包含两个属性字段, 分别命名为mins和maxs. 实现这样一个集合类是相对简单的。

复制代码
    class MySet:
    	def __init__(self, mins, maxs):
    		self.mins = mins
    		self.maxs = maxs

设计获得端点的方法

由于求集合交集的过程需要对区间端点进行大小比较,因此我们必须开发出能够获取端点值的方法。这些方法较为简便,仅需提供当前对象对应的最小值与最大值。

复制代码
    def getMin(self):
    		return self.mins
    
    def getMax(self):
    		return self.maxs
``

全部评论 (0)

还没有任何评论哟~