您可以使用 collections.Counter
from collections import Counter
uniques = [k for k, cnt in Counter(L).items() if cnt == 1]
Run Code Online (Sandbox Code Playgroud)
复杂性永远是O(n).您只需要遍历列表一次(这就是Counter
正在做的事情).排序无关紧要,因为字典赋值始终为O(1).
有一个非常简单的解决方案是使用^
运算符将序列的O(n):XOR元素组合在一起.变量的结束值将是唯一编号的值.
证明很简单:对一个数字进行异或运算产生零,所以由于除了一个数字之外的每个数字都包含它自己的副本,因此对它们进行异或运算的最终结果将为零.将唯一数字与零进行异或运算得出数字本身.