Socket
Book a DemoInstallSign in
Socket

maxintervalcover

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

maxintervalcover

The RAW MaxIntervalCover library computes the optimal subset of non-overlapping intervals that maximizes total covered length

latest
Source
npmnpm
Version
0.0.1
Version published
Weekly downloads
0
Maintainers
1
Weekly downloads
 
Created
Source

MaxIntervalCover.js

NPM Package MIT license

MaxIntervalCover is a lightweight JavaScript library for solving the maximum interval coverage problem.
It finds the subset of intervals that maximizes the total covered length while ensuring no overlaps,
with an additional tie-break rule preferring fewer intervals when lengths are equal.

Features

  • Handles both half-open [a, b) and closed [a, b] intervals
  • Accepts input as {a, b} objects or [a, b] arrays
  • Drops zero-length and invalid intervals automatically
  • Finds an optimal non-overlapping subset of intervals:
    • Maximizes the total covered length
    • On ties, prefers fewer intervals
  • Efficient O(n log n) algorithm based on dynamic programming and binary search
  • Works with fractional and very large interval endpoints

Installation

Install via npm:

npm install maxintervalcover

Or with yarn:

yarn add maxintervalcover

Alternatively, download or clone the repository:

git clone https://github.com/rawify/MaxIntervalCover

Usage

In a Node.js project:

const { MaxIntervalCover } = require("maxintervalcover");

or with ES modules:

import { MaxIntervalCover } from "maxintervalcover";

Basic Example

const intervals = [
  { a: 0, b: 3 },
  { a: 2, b: 5 },
  { a: 6, b: 10 }
];

const result = MaxIntervalCover(intervals, true); // half-open [a,b)
console.log(result);
// -> [ { a: 0, b: 3 }, { a: 6, b: 10 } ]

Array Input Example

const intervals = [[1, 3], [2, 14], [4, 10]];
const result = MaxIntervalCover(intervals);
// -> [ { a: 2, b: 14, idx: 1, weight: 12 } ]

Closed Intervals

const intervals = [[0, 1], [1, 2], [2, 3]];
const result = MaxIntervalCover(intervals, false); // closed [a,b]
console.log(result);
// -> [ { a: 0, b: 1 }, { a: 2, b: 3 } ]

API

MaxIntervalCover(ints, isHalfOpen = true)

Computes the maximum interval coverage.

  • ints: Array of intervals in either form:

    • {a: number, b: number}
    • [a, b]
  • isHalfOpen: Boolean, default true.

    • true: Intervals are half-open [a, b) → touching intervals allowed
    • false: Intervals are closed [a, b] → touching intervals forbidden

Returns: Array of chosen intervals (subset of input).

Coding Style

Like all my libraries, MaxIntervalCover is written to minimize size after compression with Google Closure Compiler in advanced mode. The code style is optimized to maximize compressibility. If you extend the library, please preserve this style.

Building the library

After cloning the Git repository run:

npm install
npm run build

Run Tests

npm test

Copyright (c) 2025, Robert Eisele Licensed under the MIT license.

Keywords

interval

FAQs

Package last updated on 05 Sep 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts