f# - 有没有一种方法可以根据 FIRST 节点拆分 Map 以满足谓词?
问题描述
有一个名为的函数Map.partition
将映射拆分为 2 个映射,其中一个包含满足谓词的所有元素。谓词将键和值作为参数,并检查映射的每个元素以确定它属于哪个结果映射。
我的要求是一个特例。我有一张地图,我想根据键是否大于或小于某个值来拆分为 2 个地图。这会更有效率,因为您只需要搜索树,直到谓词的输出发生变化。当前的实现将是 O(n),而我正在寻找的是 O(log(n))。对于自定义树实现来说,这应该是直截了当的,但如果可以的话,我更愿意使用内置的集合,然后再推出自己的集合。
解决方案
F# Maps 的文档可以在以下链接中找到:https: //msdn.microsoft.com/en-us/visualfsharpdocs/conceptual/collections.map-module-%5Bfsharp%5D 尽管您想要实现的操作可以在 O(log(n)) 中实现,在这个模块中没有实现。最好的选择是使用分区(如您所说,将是 O(n))或实现您自己的 Map 版本。您还可以在 github 中搜索一些实现红黑树的代码,并为此操作包含您自己的自定义方法。
简短回答:不,没有一种方法可以根据第一个节点拆分 Map 以满足谓词。
编辑:这个->
推荐阅读
- php - 短代码返回页面顶部而不使用回显
- r - 在计算 R 中的每周平均值时需要帮助
- r - 使用重叠日期对 10 天间隔进行子集
- .htaccess - Laravel 7 使用 IIS 将特定的 http 端口重定向到 https
- android - 如何在 MIT App Inventor 中创建我的项目的新版本
- css - 使用 CSS 修复文本和文章图像的对齐方式
- java - Spring OAuth2:如何配置列大小?
- python - 系统命令未在 python 中列出目录
- sql - 在单个列中搜索并返回多个通配符值
- python - 如何将值从 google collab 发送到 firebase