min-heap-typed 2.4.5 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +65 -0
- package/dist/cjs/index.cjs +400 -119
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs-legacy/index.cjs +399 -118
- package/dist/cjs-legacy/index.cjs.map +1 -1
- package/dist/esm/index.mjs +400 -119
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm-legacy/index.mjs +399 -118
- package/dist/esm-legacy/index.mjs.map +1 -1
- package/dist/types/data-structures/base/iterable-element-base.d.ts +1 -1
- package/dist/types/data-structures/binary-tree/avl-tree.d.ts +128 -51
- package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +210 -164
- package/dist/types/data-structures/binary-tree/binary-tree.d.ts +429 -78
- package/dist/types/data-structures/binary-tree/bst.d.ts +311 -28
- package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +212 -32
- package/dist/types/data-structures/binary-tree/segment-tree.d.ts +218 -152
- package/dist/types/data-structures/binary-tree/tree-map.d.ts +1281 -5
- package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +1087 -201
- package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +858 -65
- package/dist/types/data-structures/binary-tree/tree-set.d.ts +1133 -5
- package/dist/types/data-structures/graph/directed-graph.d.ts +219 -47
- package/dist/types/data-structures/graph/map-graph.d.ts +59 -1
- package/dist/types/data-structures/graph/undirected-graph.d.ts +204 -59
- package/dist/types/data-structures/hash/hash-map.d.ts +230 -77
- package/dist/types/data-structures/heap/heap.d.ts +287 -99
- package/dist/types/data-structures/heap/max-heap.d.ts +46 -0
- package/dist/types/data-structures/heap/min-heap.d.ts +59 -0
- package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +286 -44
- package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +278 -65
- package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +415 -12
- package/dist/types/data-structures/matrix/matrix.d.ts +331 -0
- package/dist/types/data-structures/priority-queue/max-priority-queue.d.ts +57 -0
- package/dist/types/data-structures/priority-queue/min-priority-queue.d.ts +60 -0
- package/dist/types/data-structures/priority-queue/priority-queue.d.ts +60 -0
- package/dist/types/data-structures/queue/deque.d.ts +272 -65
- package/dist/types/data-structures/queue/queue.d.ts +211 -42
- package/dist/types/data-structures/stack/stack.d.ts +174 -32
- package/dist/types/data-structures/trie/trie.d.ts +213 -43
- package/dist/types/types/data-structures/binary-tree/segment-tree.d.ts +1 -1
- package/dist/types/types/data-structures/linked-list/skip-linked-list.d.ts +1 -4
- package/dist/umd/max-heap-typed.js +397 -116
- package/dist/umd/max-heap-typed.js.map +1 -1
- package/dist/umd/max-heap-typed.min.js +1 -1
- package/dist/umd/max-heap-typed.min.js.map +1 -1
- package/package.json +2 -2
- package/src/data-structures/base/iterable-element-base.ts +4 -5
- package/src/data-structures/binary-tree/avl-tree.ts +134 -51
- package/src/data-structures/binary-tree/binary-indexed-tree.ts +302 -247
- package/src/data-structures/binary-tree/binary-tree.ts +429 -79
- package/src/data-structures/binary-tree/bst.ts +335 -34
- package/src/data-structures/binary-tree/red-black-tree.ts +290 -97
- package/src/data-structures/binary-tree/segment-tree.ts +372 -248
- package/src/data-structures/binary-tree/tree-map.ts +1284 -6
- package/src/data-structures/binary-tree/tree-multi-map.ts +1094 -211
- package/src/data-structures/binary-tree/tree-multi-set.ts +858 -65
- package/src/data-structures/binary-tree/tree-set.ts +1136 -9
- package/src/data-structures/graph/directed-graph.ts +219 -47
- package/src/data-structures/graph/map-graph.ts +59 -1
- package/src/data-structures/graph/undirected-graph.ts +204 -59
- package/src/data-structures/hash/hash-map.ts +230 -77
- package/src/data-structures/heap/heap.ts +287 -99
- package/src/data-structures/heap/max-heap.ts +46 -0
- package/src/data-structures/heap/min-heap.ts +59 -0
- package/src/data-structures/linked-list/doubly-linked-list.ts +286 -44
- package/src/data-structures/linked-list/singly-linked-list.ts +278 -65
- package/src/data-structures/linked-list/skip-linked-list.ts +689 -90
- package/src/data-structures/matrix/matrix.ts +416 -12
- package/src/data-structures/priority-queue/max-priority-queue.ts +57 -0
- package/src/data-structures/priority-queue/min-priority-queue.ts +60 -0
- package/src/data-structures/priority-queue/priority-queue.ts +60 -0
- package/src/data-structures/queue/deque.ts +272 -65
- package/src/data-structures/queue/queue.ts +211 -42
- package/src/data-structures/stack/stack.ts +174 -32
- package/src/data-structures/trie/trie.ts +213 -43
- package/src/types/data-structures/binary-tree/segment-tree.ts +1 -1
- package/src/types/data-structures/linked-list/skip-linked-list.ts +2 -1
package/README.md
CHANGED
|
@@ -82,6 +82,71 @@ yarn add min-heap-typed
|
|
|
82
82
|
|
|
83
83
|
[//]: # (No deletion!!! Start of Example Replace Section)
|
|
84
84
|
|
|
85
|
+
### Merge K sorted arrays
|
|
86
|
+
```typescript
|
|
87
|
+
const arrays = [
|
|
88
|
+
[1, 4, 7],
|
|
89
|
+
[2, 5, 8],
|
|
90
|
+
[3, 6, 9]
|
|
91
|
+
];
|
|
92
|
+
|
|
93
|
+
// Use min heap to merge: track (value, arrayIndex, elementIndex)
|
|
94
|
+
const heap = new MinHeap<[number, number, number]>([], {
|
|
95
|
+
comparator: (a, b) => a[0] - b[0]
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
// Initialize with first element of each array
|
|
99
|
+
arrays.forEach((arr, i) => heap.add([arr[0], i, 0]));
|
|
100
|
+
|
|
101
|
+
const merged: number[] = [];
|
|
102
|
+
while (heap.size > 0) {
|
|
103
|
+
const [val, arrIdx, elemIdx] = heap.poll()!;
|
|
104
|
+
merged.push(val);
|
|
105
|
+
if (elemIdx + 1 < arrays[arrIdx].length) {
|
|
106
|
+
heap.add([arrays[arrIdx][elemIdx + 1], arrIdx, elemIdx + 1]);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
console.log(merged); // [1, 2, 3, 4, 5, 6, 7, 8, 9];
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Dijkstra-style shortest distance tracking
|
|
114
|
+
```typescript
|
|
115
|
+
// Simulating distance updates: (distance, nodeId)
|
|
116
|
+
const heap = new MinHeap<[number, string]>([], {
|
|
117
|
+
comparator: (a, b) => a[0] - b[0]
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
heap.add([0, 'start']);
|
|
121
|
+
heap.add([10, 'A']);
|
|
122
|
+
heap.add([5, 'B']);
|
|
123
|
+
heap.add([3, 'C']);
|
|
124
|
+
|
|
125
|
+
// Process nearest node first
|
|
126
|
+
console.log(heap.poll()); // [0, 'start'];
|
|
127
|
+
console.log(heap.poll()); // [3, 'C'];
|
|
128
|
+
console.log(heap.poll()); // [5, 'B'];
|
|
129
|
+
console.log(heap.poll()); // [10, 'A'];
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Running median with min heap (upper half)
|
|
133
|
+
```typescript
|
|
134
|
+
const upperHalf = new MinHeap<number>();
|
|
135
|
+
|
|
136
|
+
// Add larger numbers to min heap
|
|
137
|
+
for (const n of [5, 8, 3, 9, 1]) {
|
|
138
|
+
upperHalf.add(n);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Smallest of the upper half is always accessible
|
|
142
|
+
console.log(upperHalf.peek()); // 1;
|
|
143
|
+
console.log(upperHalf.size); // 5;
|
|
144
|
+
|
|
145
|
+
// Remove smallest repeatedly
|
|
146
|
+
console.log(upperHalf.poll()); // 1;
|
|
147
|
+
console.log(upperHalf.poll()); // 3;
|
|
148
|
+
console.log(upperHalf.peek()); // 5;
|
|
149
|
+
```
|
|
85
150
|
|
|
86
151
|
[//]: # (No deletion!!! End of Example Replace Section)
|
|
87
152
|
|