【发布时间】:2013-09-27 16:56:38
【问题描述】:
我们需要维护 mobileNumber 及其在内存中的位置。 挑战在于我们拥有超过 500 万用户 存储每个用户的位置就像 500 万条记录的哈希图。 为了解决这个问题,我们必须在范围上工作
我们有一系列电话号码,例如
range1 start="9899123446" end="9912345678" location="a"
range2 start="9912345679" end="9999999999" location="b"
一个数字只能属于一个位置。
我们需要一个数据结构来将这些范围存储在内存中。
它必须支持两个功能
- findLocation(Integer number) 它应该返回位置名称到 属于哪个号码
- changeLocation(整数,字符串范围)。它将 Number 的位置从旧位置更改为新位置
这完全是在内存设计中。
我打算使用每个节点包含( startofrange , endofrange ,位置)的树结构。 我将保持节点排序。我还没有完成任何事情。 主要问题是——当第二个改变位置的函数被调用时,比如 9899123448 位置到 b
range1 节点应拆分为 3 个节点 第一个节点 (9899123446,9899123447,a)
第二个节点(9899123448,9899123448,b) 第三个节点(9899123449,9912345678,a)。
请提出合适的方法 在此先感谢
【问题讨论】:
标签: algorithm search data-structures tree