我想從列表中刪除重複的元素,其重複數是奇數。 例如,對於下面的列表:[1, 2, 3, 3, 3, 5, 8, 1, 8]
我有1個重複2次,3個重複3次,8個重複2次。所以,1和8應該出,而是3/3的元素我需要離開僅1從列表中刪除重複的元素,但只有那些有奇數重複的人
這是我想出了:
def remove_odd_duplicates(arr):
h = {}
for i in arr:
if i in h:
h[i] += 1
else:
h[i] = 1
arr = []
for i in h:
if h[i] % 2:
arr.append(i)
return arr
它返回正確的一切:[2, 3, 5]
,但我相信這可以用更好的方式寫出來。有任何想法嗎?
是否爲了事項? – 2014-10-19 13:39:49
@AshwiniChaudhary命令並不重要,但複雜性是。在我的情況下,它是O(n),我不希望它惡化到O(n^2)與計數元素 – 2014-10-19 13:40:46
@SalvadorDali這種算法更像n log n,因爲反覆查找。最後的線性掃描並不顯着,呈現爲隱性。 – user3125280 2014-10-19 13:42:53