[問題] list 眾數問題 (已解決)

作者: agiwar (我就是我)   2018-10-11 14:35:03
大家好,小弟正在python刷題中
題目是這樣的:給定一list找出眾數值,
若出現次數一樣多的元素不只一個,
則選出數值較小的元素。
這是我不import任何套件寫的:
https://imgur.com/a/3ZVIwF3
不過交出答案後不通過
原因在於 max(set(arr), key=arr.count()) 不會找出最小的元素
(在相同出現次數條件下)
但是我自己去嘗試別的list,卻可以得到最小的元素
https://imgur.com/a/7it3xL4
還請有高手能替小弟解惑,感謝~!
作者: agiwar (我就是我)   2018-10-11 14:55:00
我用filter去做會 Runtime Errorhttps://imgur.com/a/vj9mwJl
作者: ckc1ark (偽物)   2018-10-11 15:20:00
max(set(x), key=lambda v:(x.count(v), -v)) 這樣呢
作者: tsoahans (ㄎㄎ)   2018-10-11 15:24:00
作者: Yshuan (倚絃)   2018-10-11 15:46:00
對set做max操作, 可能不保證order吧.
作者: ckc1ark (偽物)   2018-10-11 15:51:00
所以先sort一下也可以 max(sorted(set(x)), key=x.count)
作者: agiwar (我就是我)   2018-10-11 15:58:00
感謝樓上大大們的回答,我想應該就是像Y大說的那樣。
作者: handsomeLin (DoGLin)   2018-10-12 14:01:00
其實根本不用這麼花俏阿...不是用個dict就能解了嗎一樣空間複雜度 多寫個六七行就能達到O(n) 為什麼不用呢
作者: jlhc (H)   2018-10-12 23:05:00
同意樓上
作者: handsomeLin (DoGLin)   2018-10-13 08:16:00
補充 像這種寫法面試你寫都不一定寫的出來 還會寫錯練習沒意義
作者: agiwar (我就是我)   2018-10-15 12:02:00
我理解林帥的說法也同意,我會練習這種trick是因為有次面試沒寫好,每題都要求一行完成...

Links booklink

Contact Us: admin [ a t ] ucptt.com