首页 > 解决方案 > 根据列表列表检查列表中是否存在组合

问题描述

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

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

限制:没有任何类型的排序,并且注释 S 具有所有唯一列表,但在列表中,它可以有重复的元素。

我怎样才能尽可能有效地做到这一点。我可以遍历 的每个元素S并将其转换为一个集合并将其与 进行比较,但是如果的每个元素的大小和长度变大set(T),这似乎很慢。SS

标签: pythonalgorithmbig-o

解决方案


使用迭代工具?

from itertools import combinations
for i in combinations(t, len(t)): if i in s: return True;

或使用排序:

t = sorted(t)
for i in s: if sorted(i)==t: return True

推荐阅读