Design & implement an “IntervalSet”, also known as “union of ranges”.
The IntervalSet should support:
- Inserting intervals
- Querying whether a particular value is contained
这道题要求设计一个区间集合。系统可以不断插入新区间,并判断某个数值是否落在已经插入的区间中。
例如,先插入 [1, 3] 和 [6, 8],再插入 [2, 7]。由于新区间同时与前面两个区间重叠,最终应合并为 [1, 8]。
这道题看起来只是普通的区间合并,真正考察的却是候选人能否设计一个长期保持正确状态的数据结构。理想的实现不会在每次查询时重新整理数据,而是在插入时就把重叠区间合并,让内部始终只保存有序且互不重叠的区间。
这样一来,查询某个值时,不需要遍历全部区间,只需要找到最接近它的左侧区间,再判断该区间是否覆盖当前值。
难点在于同时处理动态插入和高效查询。
插入的区间可能完全独立,也可能被已有区间包含,还可能一次连接多个区间。必须保证无论按照什么顺序插入,最终保存的区间并集都完全一致。
同时,区间边界也需要提前确认。例如题目使用闭区间还是左闭右开区间,两个只在端点相交的区间是否需要合并,这些都会直接影响最终实现。
优秀的回答通常会先明确这些规则,再选择能够快速定位相邻区间的数据结构。查询可以做到 O(log n),插入的成本则主要取决于本次需要合并多少个区间。
CSOAHELP 对这类题的辅助不只是给出一个答案。
我们会在面试过程中实时判断题目的核心模型,快速整理需求澄清、数据结构选择、复杂度分析和边界条件,并根据面试官的后续问题持续调整思路。
对于 IntervalSet 这种看似简单、实际上非常依赖沟通和设计质量的题目,我们能够帮助候选人迅速建立清晰的解题框架,避免在区间边界、合并逻辑和复杂度上反复试错。
整个实时辅助过程通过文本完成。通过 Mock Interview,也可以提前完整练习从理解题目、说明方案到应对 follow-up 的全过程。
我们也有代面试,面试辅助,OA代写等服务助您早日上岸~
