Skip to main content

PyPI version PyPI pyversions PyPI license

This data structure solves the range minimum query problem of finding the minimal value in a sub-array of an array of comparable objects. Different from the original problem, this data structure also supports updating the values.

Installation

This package is available on PyPI. Just use pip install -U RangeMinQuery to install it. Then you can import it using from RangeMinQuery import SegmentTree.

Usage

Initialization

Use SegmentTree() to initialize the tree with a set of keys, in comparable and hashable type.

  • func=min specifies how the best value is computed for any range of keys.

  • default=None specifies the default value for each key.

  • maxChildNum=2 specifies the maximum number of children for each node.

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

The space complexity should be $O(n)$.

Updating

You need to use update() to initialize the values, or update the values if necessary, by specifying a dictionary of key/value pairs. Currently, adding new keys is not supported yet.

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

Given m values updated, the time complexity should be $O(m^2)$.

Querying

Use query() to to find the best value of a range of keys. The range is denoted by a tuple (a, b), representing each key x such that a <= x < b. The range here is closed on the left side and open on the right side, consistent with Python tradition.

tree.query((1, 3))

The time complexity should be $O(log n)$.

Metadata

Release files for RangeMinQuery 0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for RangeMinQuery 0.2
File Size Uploaded
RangeMinQuery-0.2.tar.gz 3.0 kB Details

Release files / RangeMinQuery-0.2.tar.gz

Download URL RangeMinQuery-0.2.tar.gz
Size 3.0 kB
Tags Source
SHA-256 checksum
How to use checksums
8bb003ebd601860398f235049a085057f9cbe6f166c70e9f4a879042c96d80a6
BLAKE2b-256 checksum
How to use checksums
ca35678a6bd7ac444db73d4da5ae16692f38a5f6c0a7b8a4a8242c32df441b3f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.2 This release

1 release file

0.1.2

1 release file

0.1.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page