【发布时间】:2012-10-04 04:59:10
【问题描述】:
我最近被问到一个关于以下问题的编码问题。 我有一些解决这个问题的方法,但我不太确定这些方法是否最有效。
问题:
编写一个程序来跟踪一组文本范围。起点和终点都是字符串。
Text range example : [AbA-Ef]
Aa would fall before this range
AB would fall inside this range
etc.
字符串比较就像 'A'
我们需要在这个范围内支持以下操作
- 添加范围 - 如果适用,这应该合并范围
- 删除范围 - 从跟踪范围中删除范围并重新计算范围
- 查询范围 - 给定一个字符,函数应该返回它是否属于任何跟踪范围。
请注意,跟踪范围可以是不连续的。
我的解决方案:
我想出了两种方法。
- 将范围存储为双向链表或
- 将范围存储为某种平衡树,叶节点具有实际数据,并且它们以链表的形式相互连接。
您认为这个解决方案是否足够好,或者您可以想出更好的方法来做到这一点,以便这三个 API 为您提供最佳性能?
【问题讨论】:
-
某事是否有效完全取决于问题范围。在这种情况下,会有多少查询?
-
这听起来很像家庭作业......如果你能举一些例子也会有所帮助,正如我所说的问题不是很清楚。不过,作为一般建议,请先编写一个蛮力,缓慢但有效的实施。这将成为你的考验。查看测试慢的地方,然后修复它。
-
这不是作业问题。正如问题中已经提到的,这个问题是在面试编码测试中提出的。