a = [1, 2, 3, 1, 2, 3] b = [3, 2, 1, 3, 2, 1]
a和b应该被视为相等,因为它们具有完全相同的元素,只是顺序不同。
问题是,我的实际列表将由对象(我的类实例)组成,而不是整数。
O(n):最好使用Counter()方法(如果你的对象是可哈希的):
O(n)
def compare(s, t): return Counter(s) == Counter(t)
O(n log n):sorted() 方法次之(如果你的对象是可排序的):
O(n log n):sorted()
def compare(s, t): return sorted(s) == sorted(t)
O(n * n):如果对象既不可散列也不可排序,则可以使用相等性:
O(n * n)
def compare(s, t): t = list(t) # make a mutable copy try: for elem in s: t.remove(elem) except ValueError: return False return not t