只是要把功能做出來不難,難在要怎樣提高效率
目前在這題我嘗試過的幾種思路
statistics
的 median
,用前輩們寫好的工具求中位數statistics.median
的算法,並針對題目優化
if
一次了,直接跳過list.sort()
的效率會比 sorted()
略高一點點,statistics.median
主要是考慮可能有人會傳其他類型的數據進去才用 sorted()
if
而已sort()
,程式就需要檢查所有數字並排序,太囉嗦了,何不拿到數字後就直接找一個合適的風水寶地,直接把新的數字插入對應的位置? 這個思路就是插入排序法。
# 線性搜找插入的位置 |
# 二分搜找插入的位置 |
bisect
的 bisect_left
就可以了,它在做的事情和上面那串程式碼幾乎一樣,差別在於 bisect
是用 C 寫的,所以效率比較好,bisect
就是專門用來處理數字該在哪插入的heapq
做這件事