【发布时间】:2014-05-05 15:45:23
【问题描述】:
我需要一些帮助来为以下场景提出算法:
我有一个接收对象列表的函数。这些对象的形式是 [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 的情况相同。
我很难想出这个算法。我将编辑并发布我现在拥有的一些代码,只需先概括一下即可
【问题讨论】:
-
那么,问题是什么?
-
主要是想出一个高效的算法来完成任务。
-
只需创建一个映射键 -> 值列表。然后检查值列表中仅包含 1 个值的键。
-
问题在于,要使一个项目成为 commonList,它必须在每个集合中。所以如果一个集合的值是 [2,5],而其他集合没有类型为 2 的对,那么我们应该把它放在 uncommonList 中,而不是 commonList 中。
标签: algorithm computer-science