[问题] leetcode sliding window median

楼主: sean72 (.)   2017-10-09 08:04:18
https://leetcode.com/problems/sliding-window-median/description/
leetcode里面python解法对我来说有点玄
(mur mur 那个解法提供者的python code每次都短到爆,而且很难读懂 T_T)
有人知道这题python该怎么解吗?
我的解法 参考网络上搜到的java解法
https://repl.it/MSNr/3
维持左边一个maxheap, 右边一个minheap
median为maxheap top
每次window往右滑动,则判断新数字大于或是小于media,
往左边或是右边的heap加入一个元素
并且减去刚刚脱离window那个数字
但是会超时
我猜我的瓶颈应该是在remove之后重新heapify ,这里需要O(klogk)
java用treeset or priorityQueue remove只需要O(k)时间
作者: flarehunter (Range)   2017-10-09 10:14:00
heap的remove应该是O(log n)吧?你要不要自己实作heap看看
作者: ckc1ark (伪物)   2017-10-09 23:30:00
我印象中heapq是有个_siftup 不过leetcode不给用XD
作者: edwar (海边的野孩子)   2017-10-09 23:52:00
楼主程式我调整成自写的remove可从1.09s->0.2s,真的建议自己实作.
作者: ckc1ark (伪物)   2017-10-10 00:37:00
看到有人像我用lazy remove http://tinyurl.com/ybmpn74j不过我是用Counter 他是用set

Links booklink

Contact Us: admin [ a t ] ucptt.com