c# - .NET 等效于 Java 的 TreeSet.floor 和 TreeSet.ceiling
问题描述
例如,有一个包含一系列值的二叉搜索树。在添加新值之前,我需要检查它是否已经包含它“几乎重复”。我有 Java 解决方案,它简单地执行地板和天花板以及完成这项工作的进一步条件。
JAVA : 给定 a TreeSet
,floor()
返回这个集合中小于或等于给定元素的最大元素;ceiling()
返回此集合中大于或等于给定元素的最小元素
TreeSet<Long> set = new TreeSet<>();
long l = (long)1; // anything
Long floor = set.floor(l);
Long ceil = set.ceiling(l);
C#:最接近的数据结构似乎是SortedSet<>
. 任何人都可以建议获得输入值的下限和上限结果的最佳方法吗?
SortedSet<long> set = new SortedSet<long>();
解决方案
如前所述,上述不是答案,因为这是我们期望对数时间的树。Java 的地板和天花板方法是对数的。GetViewBetween 是对数的,Max 和 Min 也是,所以:
地板SortedSet<long>
:
sortedSet.GetViewBetween(long.MinValue, num).Max
天花板SortedSet<long>
:
sortedSet.GetViewBetween(num, long.MaxValue).Min
推荐阅读
- python - 在 Python 中递归检查 JSON 对象
- r - 如何在避免重复的同时最大限度地截断数字?
- bash - 替换除最后一个块之外的所有块
- npm-install - 如何在 ubuntu 18.04 中安装 bcrypt
- kotlin - 无法让基本的 Kotlin 协程示例在 Windows 控制台中工作
- c - 从c中的字符串中删除前导空格
- java - 我无法配置个人适配器
- parallel-processing - 是否可以将数据并行写入输出文件
- python - 如何导出 tf 模型以直接从会话中服务(不创建 tf 检查点)以最小化导出时间
- microsoft-graph-api - 查看 Microsoft Graph 活动