在2D阵列中删除无序重复项的最省时方法是什么?
问题内容:
我使用生成了一个组合列表,itertools
得到的结果如下所示:
nums = [-5,5,4,-3,0,0,4,-2]
x = [x for x in set(itertools.combinations(nums, 4)) if sum(x)==target]
>>> x = [(-5, 5, 0, 4), (-5, 5, 4, 0), (5, 4, -3, -2), (5, -3, 4, -2)]
什么是去除无序重复项(例如x[0]
和x[1]
是重复项)的最复杂的时间复杂度有效方法。有内置的东西可以处理吗?
我的一般方法是在一个元素中创建所有元素的计数器,然后与下一个元素进行比较。这是最好的方法吗?
感谢您的指导。
问题答案:
因为要查找无序重复项,所以最好的方法是通过类型转换。 将 它们 键入 为 set
。由于set仅包含 不可变
元素。因此,我做了一组 tuples
。
注意:消除 重复项 的最佳方法是制作
set
给定元素。
>>> set(map(tuple,map(sorted,x)))
{(-3, -2, 4, 5), (-5, 0, 4, 5)}