求解范围最小查询问题

RangeMinQuer的Python项目详细描述


PyPI versionPyPI pyversionsPyPI license

这个数据结构解决了在可比较对象数组的子数组中找到最小值的问题。与原来的问题不同,这个数据结构还支持更新值。

安装

这个包在pypi上提供。只需使用pip install -U RangeMinQuery来安装它。然后可以使用from RangeMinQuery import SegmentTree导入它。

用法

初始化

使用SegmentTree()comparable和hashable类型中的一组键初始化树。

  • func=min指定如何计算任意范围的键的最佳值。

  • default=None指定每个键的默认值。

  • ^ {CD6>}指定每个节点的最大子数。

tree=SegmentTree({1,2,3,4,5},func=min,default=0,maxChildNum=2)

空间复杂度为$O(n)$。

更新

您需要使用update()来初始化值,或者在必要时通过指定键/值对字典来更新值。目前,还不支持添加新密钥。

tree.update({1:3,4:6})

更新m值,时间复杂度为O(m^ 2)$。

查询

使用query()查找一系列键的最佳值。范围由元组(a, b)表示,表示每个键x,这样a <= x < b。这里的范围在左侧关闭,在右侧打开,这与python的传统是一致的。

tree.query((1,3))

时间复杂度为$O(log n)$。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用DAO,DTO模式作为MVC   java获取用于Android开发的图像   java Android Studio txt文件中的文件计数   任何类型泛型构造的枚举的java类   java为我的应用程序上的每个用户创建一个图表   算法如何在java中进行递归搜索?   java如何从MongoRepository/QueryDSL中获取不同的字段?   java如何获取JCheckbox的选定索引?   java嵌套。属性文件   Java如何发现两个数组是否彼此重复?   java Spring启动应用程序,带有raspberry pi上的Jython   RMI需要java。rmi。服务器NAT的主机名,那么像CORBA这样的其他技术如何解决NAT问题呢?   java If语句总是给出相同的答案   x到y的幂的java递归方法   使用ApacheCamel对USPSAPI进行地址验证的java HTTP查询   java很难定义与ArrayList交互的方法   java如何将HttpServletRequest转换为原始请求字符串?