我正在做一些算法练习并遇到过这个问题。
我有一个列表/数组,如下所示:[1,5,4,9,10,2,...]
如何返回查找具有相同总和的列表的唯一集合?例如,(5,4)等于(9),(1,5)等于6,依此类推。
我熟悉查找列表的所有集合,但是添加的技巧是集合必须是唯一的,如果一个索引用于一个集合,相同的索引不能用于另一个集合
有什么想法?感谢。
编辑:
在考虑了这个之后,这就是我所拥有的。我列出了所有可能的套装,而不是担心独特。然后我得到原始超集数组的最小值和最大值。我将值从最小值循环到最大值,递增1并检查每个集合。创建一个hashmap。如果集合的总和等于我们正在检查的值,我们将该集合添加到列表中。此外,如果集合的索引值具有键,我们将hashmap中的值关联键设置为True。继续使用hashmap条件检查每个集合。然后我们返回应该只有唯一集合的列表列表。
有意义吗?
答案 0 :(得分:2)
make a list of all possible sets
- 这当然是时间和空间的指数。这是一个多项式时间解决方案(如果我理解了这个问题):
在此迭代过程结束时,您将拥有一组完整的脱节集 - 不一定是具有最多元素数或最多数组的集,而是一个不能从其余元素创建其他集的集在列表中。