[問題] leetcode sliding window median
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)時間
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 172.89.32.145
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1507507492.A.40B.html
推
10/09 10:14,
8年前
, 1F
10/09 10:14, 1F
→
10/09 10:14,
8年前
, 2F
10/09 10:14, 2F
python heapq 沒有辦法從heap裡面移除單一元素
你說的應該是從堆頂移除元素的複雜度(移除堆頂,然後sift up)
java priorityQueue有remove 但是O(n)
※ 編輯: sean72 (172.89.32.145), 10/09/2017 12:39:30
推
10/09 23:30,
8年前
, 3F
10/09 23:30, 3F
推
10/09 23:52,
8年前
, 4F
10/09 23:52, 4F
→
10/09 23:52,
8年前
, 5F
10/09 23:52, 5F
推
10/10 00:37,
8年前
, 6F
10/10 00:37, 6F
→
10/10 00:38,
8年前
, 7F
10/10 00:38, 7F
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 4 篇):