2.0.3 • Published 6 months ago

deque-typed v2.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
6 months ago

NPM GitHub top language npm eslint npm bundle size npm bundle size npm

What

Brief

This is a standalone Deque data structure from the data-structure-typed collection. If you wish to access more data structures or advanced features, you can transition to directly installing the complete data-structure-typed package

How

install

npm

npm i deque-typed --save

yarn

yarn add deque-typed

snippet

prize roulette

    class PrizeRoulette {
      private deque: Deque<string>;

      constructor(prizes: string[]) {
        // Initialize the deque with prizes
        this.deque = new Deque<string>(prizes);
      }

      // Rotate clockwise to the right (forward)
      rotateClockwise(steps: number): void {
        const n = this.deque.length;
        if (n === 0) return;

        for (let i = 0; i < steps; i++) {
          const last = this.deque.pop(); // Remove the last element
          this.deque.unshift(last!); // Add it to the front
        }
      }

      // Rotate counterclockwise to the left (backward)
      rotateCounterClockwise(steps: number): void {
        const n = this.deque.length;
        if (n === 0) return;

        for (let i = 0; i < steps; i++) {
          const first = this.deque.shift(); // Remove the first element
          this.deque.push(first!); // Add it to the back
        }
      }

      // Display the current prize at the head
      display() {
        return this.deque.first;
      }
    }

    // Example usage
    const prizes = ['Car', 'Bike', 'Laptop', 'Phone', 'Watch', 'Headphones']; // Initialize the prize list
    const roulette = new PrizeRoulette(prizes);

    // Display the initial state
    console.log(roulette.display()); // 'Car' // Car

    // Rotate clockwise by 3 steps
    roulette.rotateClockwise(3);
    console.log(roulette.display()); // 'Phone' // Phone

    // Rotate counterclockwise by 2 steps
    roulette.rotateCounterClockwise(2);
    console.log(roulette.display()); // 'Headphones'

sliding window

    // Maximum function of sliding window
    function maxSlidingWindow(nums: number[], k: number): number[] {
      const n = nums.length;
      if (n * k === 0) return [];

      const deq = new Deque<number>();
      const result: number[] = [];

      for (let i = 0; i < n; i++) {
        // Delete indexes in the queue that are not within the window range
        if (deq.length > 0 && deq.first! === i - k) {
          deq.shift();
        }

        // Remove all indices less than the current value from the tail of the queue
        while (deq.length > 0 && nums[deq.last!] < nums[i]) {
          deq.pop();
        }

        // Add the current index to the end of the queue
        deq.push(i);

        // Add the maximum value of the window to the results
        if (i >= k - 1) {
          result.push(nums[deq.first!]);
        }
      }

      return result;
    }

    const nums = [1, 3, -1, -3, 5, 3, 6, 7];
    const k = 3;
    console.log(maxSlidingWindow(nums, k)); // [3, 3, 5, 5, 6, 7]

API docs & Examples

API Docs

Live Examples

Examples Repository

Data Structures

Standard library data structure comparison

Benchmark

Built-in classic algorithms

Software Engineering Design Standards

2.0.3

6 months ago

2.0.1

7 months ago

2.0.0

8 months ago

1.54.3

9 months ago

1.54.2

9 months ago

1.54.1

9 months ago

1.53.4

9 months ago

1.53.3

9 months ago

1.53.6

9 months ago

1.53.5

9 months ago

1.53.8

9 months ago

1.53.7

9 months ago

1.53.9

9 months ago

1.54.0

9 months ago

1.53.2

9 months ago

1.53.1

10 months ago

1.52.5

10 months ago

1.52.6

10 months ago

1.52.9

10 months ago

1.52.8

10 months ago

1.53.0

10 months ago

1.52.4

10 months ago

1.52.3

12 months ago

1.52.2

12 months ago

1.52.1

1 year ago

1.52.0

2 years ago

1.51.9

2 years ago

1.51.8

2 years ago

1.51.7

2 years ago

1.51.5

2 years ago

1.51.4

2 years ago

1.51.0

2 years ago

1.51.2

2 years ago

1.51.1

2 years ago

1.51.3

2 years ago

1.50.9

2 years ago

1.50.8

2 years ago

1.50.7

2 years ago

1.50.6

2 years ago

1.50.5

2 years ago

1.50.4

2 years ago

1.50.3

2 years ago

1.50.2

2 years ago

1.50.1

2 years ago

1.50.0

2 years ago

1.49.7

2 years ago

1.49.9

2 years ago

1.49.8

2 years ago

1.49.5

2 years ago

1.49.6

2 years ago

1.49.4

2 years ago

1.49.3

2 years ago

1.49.1

2 years ago

1.49.2

2 years ago

1.49.0

2 years ago

1.48.9

2 years ago

1.48.8

2 years ago

1.48.7

2 years ago

1.48.6

2 years ago

1.48.5

2 years ago

1.48.4

2 years ago

1.48.3

2 years ago

1.48.2

2 years ago

1.48.1

2 years ago

1.48.0

2 years ago

1.47.9

2 years ago

1.47.8

2 years ago

1.47.7

2 years ago

1.47.6

2 years ago

1.47.5

2 years ago

1.47.4

2 years ago

1.47.3

2 years ago

1.47.2

2 years ago

1.47.1

2 years ago

1.46.8

2 years ago

1.46.7

2 years ago

1.46.6

2 years ago

1.46.5

2 years ago

1.46.3

2 years ago

1.46.2

2 years ago

1.46.1

2 years ago

1.45.3

2 years ago

1.45.2

2 years ago

1.45.1

2 years ago

1.45.0

2 years ago

1.44.1

2 years ago

1.44.0

2 years ago

1.43.3

2 years ago

1.43.1

2 years ago

1.43.0

2 years ago

1.42.9

2 years ago

1.42.8

2 years ago

1.42.7

2 years ago

1.42.6

2 years ago

1.42.5

2 years ago

1.42.4

2 years ago

1.42.3

2 years ago

1.42.2

2 years ago

1.42.1

2 years ago

1.42.0

2 years ago

1.41.9

2 years ago

1.41.8

2 years ago

1.41.7

2 years ago

1.41.6

2 years ago

1.41.5

2 years ago

1.41.4

2 years ago

1.41.3

2 years ago

1.41.2

2 years ago

1.41.1

2 years ago

1.41.0

2 years ago

1.40.0

2 years ago

1.39.6

2 years ago

1.39.5

2 years ago

1.39.4

2 years ago

1.39.3

2 years ago

1.39.2

2 years ago

1.39.1

2 years ago

1.39.0

2 years ago

1.38.9

2 years ago

1.38.8

2 years ago

1.38.7

2 years ago

1.38.6

2 years ago

1.38.5

2 years ago

1.38.4

2 years ago

1.38.2

2 years ago

1.38.1

2 years ago

1.38.0

2 years ago

1.37.9

2 years ago

1.37.8

2 years ago

1.37.7

2 years ago

1.37.6

2 years ago

1.37.5

2 years ago

1.37.4

2 years ago

1.37.3

2 years ago

1.37.2

2 years ago

1.37.0

2 years ago

1.36.9

2 years ago

1.36.8

2 years ago

1.36.6

2 years ago

1.36.5

2 years ago

1.36.4

2 years ago

1.36.3

2 years ago

1.36.2

2 years ago

1.36.0

2 years ago

1.40.0-rc

2 years ago

1.35.1

2 years ago

1.35.0

2 years ago

1.34.9

2 years ago

1.34.8

2 years ago

1.34.7

2 years ago

1.34.6

2 years ago

1.34.5

2 years ago

1.34.4

2 years ago

1.34.3

2 years ago

1.34.2

2 years ago

1.34.1

2 years ago

1.33.8

2 years ago

1.33.7

2 years ago

1.33.6

2 years ago

1.32.9

2 years ago

1.32.2

2 years ago

1.32.0

2 years ago

1.31.0

2 years ago

1.3.3

2 years ago

1.3.2

2 years ago

1.3.1

2 years ago

1.21.4

2 years ago

1.21.3

2 years ago

1.21.2

2 years ago

1.21.0

2 years ago

1.20.0

2 years ago

1.19.9

2 years ago

1.19.7

2 years ago

1.19.6

2 years ago

1.19.5

2 years ago

1.19.3

2 years ago