我们需要维护 mobileNumber 及其在内存中的位置。挑战在于我们有超过 500 万用户,存储每个用户的位置就像 500 万条记录的哈希图。为了解决这个问题,我们必须在范围上工作
我们得到了一系列电话号码,例如
range1 start="9899123446" end="9912345678" location="a"
range2 start="9912345679" end="9999999999" location="b"
一个号码只能属于一个位置。
我们需要一个数据结构来将这些范围存储在内存中。
它必须支持两个功能
- findLocation(Integer number) 它应该返回数字所属的位置名称
- 更改位置(整数,字符串范围)。它将号码的位置从旧位置更改为新位置
这完全是在内存设计中。
我打算使用每个节点包含的树结构( startofrange , endofrange ,location)。我将保持节点排序。我还没有完成任何事情。主要问题是 - 当第二个改变位置的函数被称为 9899123448 位置到 b
range1 节点应拆分为 3 个节点 1st node (9899123446,9899123447,a)
2nd node (9899123448,9899123448,b)
3rd node (9899123449,9912345678,a)
。
请提出合适的方法提前谢谢