我正在为这些要求搜索集合的有效实现:
实施例: 假设集合包含以下范围对象: 项目1:5至10 第2:7至9项 项目3:3至6
然后,采取' 8'作为参数,集合应返回第1项和第2项 范围可以重叠。返回的范围对象不需要按任何特定顺序。 开始和结束值仅受UInt32类型的值范围限制(与上面的简单示例相反)。
是否可以使用一个流行的集合库来实现它,比如C5?
实现应该是高效的,需要迭代大量集合元素的实现是微不足道的,这就是我已经拥有的。
答案 0 :(得分:0)
你可以用不同的方式解决它,一个不错的方法。
如果范围列表不是太大。您可以专注于构建List<List<T>>
或List<T>[]
,同时使用范围ID,即8作为索引或键,用于返回包含此索引的项目。
List<List<T>>
,其中T代表Item的对象类型。阵列
索引 - 值
0 -
1 -
2 -
3 - Item 3
4 - Item 3
5 - Item 1, Item 3
6 - Item 1, Item 3
7 - Item 1, Item 2
8 - Item 1, Item 2
9 - Item 1, Item 2
10 - Item 1
在此方法中,您可以通过 O(1)访问包含请求范围的项目myArray[index]
将返回项目列表。
复杂度:
答案 1 :(得分:0)