【发布时间】:2013-12-15 06:21:00
【问题描述】:
这是我目前所拥有的:
alist=[1,1,1,2,2,3,4,2,2,3,2,2,1]
def icount(alist):
adic={}
for i in alist:
adic[i]=alist.count(i)
return adic
print(icount(alist))
我做了一些研究,发现 list.count() 的时间复杂度是 O(n),因此,这段代码将是 O(n^2)。
有没有办法将其减少到 O(nlogn)?
【问题讨论】:
-
见
collections.Counter。它就是为这类工作而存在的。 -
如果只增加
adic[i],复杂度应该是O(n)。 -
但是我怎么知道它的时间复杂度呢?
标签: python list python-3.x