python - 根据列表列表检查列表中组合的存在

标签 python algorithm big-o

如果我有一个整数列表 S: [[1,2,3],[3,4,5],[5,6,7]],和一个列出 T: [2,3,1]。如果 T 作为组合包含在 S 中,我想返回 true。假设 S 的每个元素与 T 的长度相同。

在这种情况下,我想返回 true。

限制:不能进行任何类型的排序,注意 S 具有所有唯一列表,但在一个列表中,它可以有重复元素。

我怎样才能尽可能高效地做到这一点。我可以遍历 S 的每个元素并将它变成一个集合,然后将它与 set(T) 进行比较,但是如果 S< 的大小,这似乎很慢 并且 S 的每个元素的长度变大。

最佳答案

你可以使用sorted:

>>> S = [[1,2,3],[3,4,5],[5,6,7]]
>>> T = [2,3,1]
>>> any(sorted(T) == sorted(x) for x in S)
True

关于python - 根据列表列表检查列表中组合的存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50207041/

相关文章:

java - 优化基于网格的粒子系统

algorithm - 这些结果如何证明我的方法在 O(n lgn) 时间内运行?

java - 在给定开始时间和持续时间的情况下查找任务结束顺序的算法

python - 在pandas中,如何计算逗号之间的项目数,在列类型之间划分?

python - 如何使用文件输入运行 Python 顶级/解释器?

python - 如何向networkx中的边缘添加新属性?

algorithm - 如何在 Photoshop 等专业绘图应用程序中存储用于撤消重做的 Action ?

algorithm - 了解树型数据结构的运行时

java - 具有一些额外条件的子集和算法的复杂性

python - 了解 Python fork 和内存分配错误