作者Arton0306 (Ar藤)
看板Python
标题Re: [问题] 想请教一个问题
时间Sat Feb 12 15:02:33 2011
※ 引述《DP1010 (DP)》之铭言:
: 现在有一个list
: 假设长这样 ['369','200','116','90','180','638','724','920','14','50','11','65']
: 我现在想要找出这list里面数字的最大5个
: 其依序的"位置"为何
: 比如这个list最大的数字 依序为 920 724 638 369 200
: 其依序的位置为 7 6 5 0 1
: 想请教各位大大要怎麽做
: 谢谢
如果你的list中都是非负整数,而且不太大,而且你又不在意记忆体
可以用类似bitmap的方法
data=[num...]
container=[[]*1000000]
for i in range(len(data)):
container[data[i]]+=[i]
最後再从container反向找出5个你要的
这方法好处是O(n)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.140.149
※ 编辑: Arton0306 来自: 220.135.140.149 (02/12 15:08)
1F:→ yjc1:你忘了算 hash map lookup/insert 的复杂度 02/12 16:26
2F:→ purincess:上面cccx的也是O(n)吧 02/12 18:25
3F:→ Arton0306:哪边有hash?? 恩cccx的也是O(n) 但常数项也许大一点 02/12 20:08
4F:→ Arton0306:cccx的可用在浮点数 这个只能用在整数 02/12 20:16
5F:→ yjc1:sorry, container 看成 hash map :~~ 02/12 21:49