4.0.0 • Published 1 month ago

@algorithm.ts/sliding-window v4.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 month ago

A typescript implementation of the sliding-window algorithm.

Install

  • npm

    npm install --save @algorithm.ts/sliding-window
  • yarn

    yarn add @algorithm.ts/sliding-window

Usage

  • SlidingWindow

    MemberReturnDescription
    constructor(options: ISlidingWindowProps)SlidingWindow
    reset(options?: ISlidingWindowResetOptions)voidReset the sliding window.
    forwardLeftBoundary(steps?: number)voidMove the sliding window left boundary forward by steps steps.
    forwardRightBoundary(steps?: number)voidMove the sliding window right boundary forward by steps steps.
    min()number | undefinedReturn the minimum element in the Sliding Window.
  • ISlidingWindowProps

    • WINDOW_SIZE: (required) the width of the sliding window.

    • compare: (required) compare two index to determine which one is smaller.

    • startIndex: (optional) the first index of the input range.

Example

  • A solution of https://leetcode.com/problems/sliding-window-maximum/

    import { SlidingWindow } from '@algorithm.ts/sliding-window'
    
    export function maxSlidingWindow(nums: number[], K: number): number[] {
      const N = nums.length
      if (N < K) return []
    
      const results: number[] = []
      const window = new SlidingWindow({
        WINDOW_SIZE: K,
        compare: (x, y) => nums[y] - nums[x],
      })
    
      window.forwardRightBoundary(K - 1)
      for (let i = K - 1; i < N; ++i) {
        window.forwardRightBoundary()
        results.push(nums[window.min()!])
      }
      return results
    }

Related

4.0.0

1 month ago

3.1.1

11 months ago

3.1.0

1 year ago

3.0.0-alpha.8

1 year ago

3.0.0

1 year ago

3.0.0-alpha.7

1 year ago

3.0.0-alpha.6

1 year ago

3.0.0-alpha.3

1 year ago

3.0.0-alpha.2

1 year ago

3.0.0-alpha.5

1 year ago

3.0.0-alpha.4

1 year ago

3.0.0-alpha.1

1 year ago

3.0.0-alpha.0

2 years ago

2.0.14

2 years ago

2.0.13

2 years ago

2.0.12

2 years ago

2.0.5

2 years ago

2.0.4

2 years ago

2.0.11

2 years ago

2.0.7

2 years ago

2.0.6

2 years ago

2.0.9

2 years ago

2.0.10

2 years ago

2.0.8

2 years ago

2.0.8-alpha.0

2 years ago

2.0.7-alpha.1

2 years ago

2.0.7-alpha.0

2 years ago

2.0.3

2 years ago

2.0.2

2 years ago

2.0.0-alpha.0

2 years ago

2.0.1

2 years ago

1.0.24

2 years ago

2.0.0

2 years ago

1.0.23

2 years ago

1.0.19

3 years ago

1.0.22

3 years ago

1.0.21

3 years ago

1.0.20

3 years ago

1.0.18

3 years ago

1.0.17

3 years ago

1.0.16

3 years ago

1.0.15

3 years ago

1.0.14

3 years ago