作者MasterChang (我爱ASM)
看板Programming
标题Re: [问题] 演算法
时间Tue Jan 16 02:42:44 2007
※ 引述《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