我需要一些帮助来为以下场景提供算法:
我有一个函数,它接收一个对象列表的列表。这些对象的形式为[type,value],其中type是四个选项之一(简单地说,介于0-3之间的数字之间),value可以是任意的。
所以输入可能是这样的:
{{[0,5],[1,8]},{[0,5],[3,88]},{[0,5],[1,25],[3,88] }}
我需要算法做的是,创建一个名为commonList和uncommonList的列表。 commonList将仅包含该对的类型部分,但仅当列表中的每个集合具有该类型的相同值时。 uncommonList将包含每个[type,value]对的类型,它不是列表中每个集合的标识/部分。
所以输入示例:
commonList = {0} uncommonList = {1,3}
commonList包含值0,因为每个集合都有一个类型为0的对,并且每对都具有相同的值。
uncommonList包含值1,因为所有3个集合都不包含相同的[1,value]对。值3的情况相同。
我对这个算法提出了一些困难。我将编辑并发布我现在拥有的一些代码,只需先将其概括一下
答案 0 :(得分:1)
如果我正确理解了您的问题,您希望找到所有集合共有的对[密钥,值]对。
为了有效实现这一目标,您可以做的是:
如果你可以保证你拥有真实的对象集(不是一组中相同对象的两倍),你可以加快速度:
您可以使用对象之间的距离(如果距离低于某个值,则可以使用相同的对象)轻松推广。