Programming 板


LINE

這是個面試問題..但我也不知道解答 給定一個一直會產生的數列..要如何最有效率的找到中位數 如果是要求平均只要constant time 和 space, 中位數就得要所有數都存了 (因為任何過去出現的數都有可能在新產生幾個數列後變成中位數) 如果固定n個數, 需要O(n)的時間和空間可以找到第k大的數(任意k) (selection), 但如果這個數列一直在產生呢? 有沒有data structure 可以在n個數後新加m個數,而能在O(m)找到中位數? O(mlogn)倒是應該可以(不太確定) 若有個blance binary search tree, 並且計有每個子樹下有多少個數, 中位數應該離root不遠, 可能可以在有這樣的數中constant time找到 (對嗎?) 新插入m個數也只要mlogn 實際問題若資料有特殊的分佈也許也可以把數分堆 不知道版上有沒有大師可以指導解惑 -- Life is continuous --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 108.94.138.88
1F:推 EdisonX:轉去 Prob_Solve 應較佳。 180.177.76.161 08/17 16:17
2F:→ EdisonX:補一下,我也不知道正解,但我會用 bucket. 180.177.76.161 08/17 16:24
3F:推 rifiz:用兩個heap, 一個max 一個min 就可以達到 114.43.191.241 08/17 17:33
sorryChen:轉錄至看板 Prob_Solve 08/18 00:20
4F:→ sorryChen:兩個heap如何能有效的找中位數呢? 108.94.138.88 08/18 00:22
5F:→ sorryChen:話說有個DS叫MinMaxHeap,但無關中位數 108.94.138.88 08/18 00:24
6F:推 JingXD:疑.. 不是online看新還的比現在有中位數 203.77.50.240 08/18 01:10
7F:→ cathat:把所有的數字依大小分兩半 128.8.115.58 08/18 03:32
8F:→ cathat:minHeap 存大的那一半的最小的一個 128.8.115.58 08/18 03:32
9F:→ cathat:maxHeap 存小的大一半最大的那一個 128.8.115.58 08/18 03:32
10F:→ cathat:median 可以從這兩個數字推出來 128.8.115.58 08/18 03:34
11F:推 Huangs:如樓上說狦兩個heap,而且用fibonacci heap 118.166.90.91 08/18 04:34
12F:→ Huangs:fibonacci heap的insert/find分攤都是O(1) 118.166.90.91 08/18 04:34
13F:推 Huangs:兩個heap 一個存大的一半 一個存小的一半 118.166.90.91 08/18 04:37
14F:→ Huangs:然後一直保持兩個heap一樣大 118.166.90.91 08/18 04:38
15F:→ Huangs:中位數就在兩個heap的root。 118.166.90.91 08/18 04:38
16F:→ BombCat:可是如果能依大小分兩半那就表示已經知道220.132.195.217 08/18 09:48
17F:→ BombCat:中位數了?220.132.195.217 08/18 09:49
18F:→ Arton0306:不過還要delete, fib heap是lnN 114.42.54.141 08/18 10:52
19F:推 suhorng:大小是固定一半一半的 一開始只有一個元 118.166.56.185 08/18 12:13
20F:→ suhorng:素當然沒問題 以後每次加入新的都要維持 118.166.56.185 08/18 12:13
21F:→ suhorng:兩邊元素個數差不多 118.166.56.185 08/18 12:14
22F:→ sorryChen:感謝給位大師及Prob_Solve有版友賜教 108.94.138.88 08/18 13:07
23F:→ sorryChen:所以這個問題應該只有O(mlnN)的解法 108.94.138.88 08/18 13:08
24F:→ sorryChen:m是隨後新加入的元素 108.94.138.88 08/18 13:09
25F:推 singlovesong:應該沒有linear解法 203.77.50.240 08/18 15:16
26F:→ singlovesong:每進來一個新值 勢必會動到舊的 203.77.50.240 08/18 15:17
27F:→ singlovesong:資料 沒有辦法在O(1)插入新值 203.77.50.240 08/18 15:17
28F:→ singlovesong:且還保持資結sorted的狀態 203.77.50.240 08/18 15:17
29F:推 Huangs:沒有刪除的話,是可以linear的。 118.166.140.98 08/18 23:17
30F:推 singlovesong:請問要怎麼做@@? 203.77.50.240 08/19 10:18
31F:推 Huangs:就是前面講的,fibonacci heap 118.166.140.98 08/19 11:33
32F:→ Huangs:的insert/find都是 O(1) (amortized) 118.166.140.98 08/19 11:33
33F:推 Huangs:我想起來還是要delete才能維持兩heap平衡 118.166.140.98 08/19 11:37
34F:→ Huangs:果然還是沒辦法 @@ 118.166.140.98 08/19 11:37
35F:推 yoco315:嗯,難的就是平衡的時候要用掉lnN :( 219.70.204.108 08/20 07:40







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP