Re: [問題] 想請教一個問題

看板Python作者 (Ar藤)時間13年前 (2011/02/12 15:02), 編輯推噓0(005)
留言5則, 3人參與, 最新討論串6/6 (看更多)
※ 引述《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)

02/12 16:26, , 1F
你忘了算 hash map lookup/insert 的複雜度
02/12 16:26, 1F

02/12 18:25, , 2F
上面cccx的也是O(n)吧
02/12 18:25, 2F

02/12 20:08, , 3F
哪邊有hash?? 恩cccx的也是O(n) 但常數項也許大一點
02/12 20:08, 3F

02/12 20:16, , 4F
cccx的可用在浮點數 這個只能用在整數
02/12 20:16, 4F

02/12 21:49, , 5F
sorry, container 看成 hash map :~~
02/12 21:49, 5F
文章代碼(AID): #1DLZ2BfO (Python)
討論串 (同標題文章)
文章代碼(AID): #1DLZ2BfO (Python)