所以如果第一个列表是3个,6个,4个,5个 第二,五,七,七 两个清单之间的脱节是3,4,7
我的想法是将第一个列表中的所有节点与第二个列表中的所有节点进行比较,所以:
比较3到5,6,7并且如果两者都不匹配,则在新列表中创建一个值为3的节点。但是当列表继续时,当我将最后一个节点(5)与第二个节点中的所有其他节点进行比较时,功能结束,并且从禁令中缺少数字7。这就是问题所在。
答案 0 :(得分:2)
想想你将如何在现实生活中做到这一点。如果你有一组带有数字的7张卡片,其中一张有{3,4,5,6},另一张有{5,6,7}你怎么去寻找分离?
这可能有点简单但没有优化,但我个人会开始假设'每个元素都在脱节。
伪代码:
Create a set of all the elements used at least once
making sure to have no duplicate elements in the set.
//In this particular problem: initial disjunctive array = {3, 4, 5, 6, 7}
For every element 'first' in the first set of cards:
For every element 'second' in the second set of cards:
If (first == second && first is still in the disjunctive array)
Remove first from the disjunctive array
通过从两个集合中出现的数组中删除所有元素,最终得到析取。
答案 1 :(得分:2)
对第二个列表执行相同的操作。从第二个列表中取出每个元素,与第一个列表中的每个列表进行比较。如果不存在,请附加到输出列表。
更优化的方法:对两个列表进行排序并比较两个列表。