看板 Prob_Solve 關於我們 聯絡資訊
問題: 給定n個數(不限整數或浮點數,也不限上下界), 如果已知其中僅有兩個數相等, 要如何找到這兩個數呢? 我只想得到先sort後再找, 但這樣感覺多做了很多事情, 請問有沒有低於O(nlogn)、最好是O(n)的做法呢? 感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.162.91.142 ※ 文章網址: http://www.ptt.cc/bbs/Prob_Solve/M.1417440347.A.3F4.html
fenzhang: hash_set 12/01 21:42
freef1y3: 一個一個丟進binary search tree,丟之前先檢查是不是 12/01 23:08
freef1y3: 已經在tree裡了 12/01 23:08
Elohim123: 用BST的話應該也是O(nlogn)? 因為每次丟數字進去的時候 12/02 23:39
Elohim123: 也花了logn 12/02 23:39
penknifelee: 我的想法與樓上相同 另外可否請一樓做進一步的解說? 12/03 16:26
CaptainH: 把浮點數表示法視為整數,然後用xor找? 12/04 03:15
LPH66: 我的感覺是如果只准比較那好像逃不出 O(nlogn) 12/04 14:54
LPH66: 不過暫時還沒有證明就是了... 12/04 14:55
pika0923: 使用資料表達的bit來作BST的話 運算數正比於樹走訪深度 12/07 11:47
pika0923: 而樹的深度正比於資料大小 ->O(n) 12/07 11:47
pika0923: 兩篇前的perfect hashing那邊我有寫一個類似的作法 12/07 11:50
pigalan: 樓上這樣是O(nlogC)吧, C是數值大小 12/09 02:16
pika0923: 其實n原本就是input size而不是package size 12/09 12:26
pika0923: 看總bit數在armotize後不會發生算了n又要算logC的狀況 12/09 12:27
pika0923: 例:讀入任意數量的任意長度整數是O(n) 12/09 12:30
penknifelee: 真厲害,感謝! 12/17 18:48