※ 引述《haryewkun (Har)》之銘言:
: 換題目玩玩。
: 如果我們不要走漏洞,而是真的當作是實用的情況,然後把題目修改一點,
: 必須要找出最小、而又沒有被使用的數字,那麼除了排序之外,還有沒有其
: 他更快捷的方法?
: 討論區真的有這個問題。就是十萬個用戶,注冊了從 1到100000的 UID,然
: 後版主刪掉中間五萬名會員,所以就零零散散地斷層了。如果新用戶注冊,
: 就必須用 100001 的UID。
: 如果是這樣的問題,除了排序之外,還有沒有別的辦法?
假設UID為1~100,000,沒有比100,000 更高的狀況了。有沒有辦法
在不用排序的狀況下知道哪些是空的 UID?或是一開始就維護一個
有序的UID,包含使用中的UID及未使用的UID?
維護兩個資料結構,一個使用中並已序之UID ,一個為未使用並已
序之UID ,兩者長度總和可透過共用區塊維護。(此例總長為100,000,
並假設不會增加了...就算增加也是比照辦理)
這樣可行嗎?I don't know. 不過因為資料結構為已序,所以未使
用之UID不用排序就可以馬上知道。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.132.23.74