data-structure-typed 2.5.2 → 2.6.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/.husky/pre-commit +3 -0
- package/CHANGELOG.md +3 -1
- package/MIGRATION.md +217 -0
- package/README.md +80 -8
- package/README_CN.md +569 -143
- package/SPECIFICATION.md +44 -14
- package/SPECIFICATION.zh-CN.md +44 -14
- package/dist/cjs/binary-tree.cjs +5841 -1678
- package/dist/cjs/graph.cjs +422 -14
- package/dist/cjs/hash.cjs +95 -7
- package/dist/cjs/heap.cjs +174 -16
- package/dist/cjs/index.cjs +7751 -2449
- package/dist/cjs/linked-list.cjs +443 -2
- package/dist/cjs/matrix.cjs +56 -0
- package/dist/cjs/priority-queue.cjs +172 -14
- package/dist/cjs/queue.cjs +435 -0
- package/dist/cjs/stack.cjs +103 -4
- package/dist/cjs/trie.cjs +106 -0
- package/dist/cjs-legacy/binary-tree.cjs +5933 -1772
- package/dist/cjs-legacy/graph.cjs +422 -14
- package/dist/cjs-legacy/hash.cjs +95 -7
- package/dist/cjs-legacy/heap.cjs +174 -16
- package/dist/cjs-legacy/index.cjs +8154 -2854
- package/dist/cjs-legacy/linked-list.cjs +443 -2
- package/dist/cjs-legacy/matrix.cjs +56 -0
- package/dist/cjs-legacy/priority-queue.cjs +172 -14
- package/dist/cjs-legacy/queue.cjs +435 -0
- package/dist/cjs-legacy/stack.cjs +103 -4
- package/dist/cjs-legacy/trie.cjs +106 -0
- package/dist/esm/binary-tree.mjs +5841 -1678
- package/dist/esm/graph.mjs +422 -14
- package/dist/esm/hash.mjs +95 -7
- package/dist/esm/heap.mjs +174 -16
- package/dist/esm/index.mjs +7751 -2449
- package/dist/esm/linked-list.mjs +443 -2
- package/dist/esm/matrix.mjs +56 -0
- package/dist/esm/priority-queue.mjs +172 -14
- package/dist/esm/queue.mjs +435 -0
- package/dist/esm/stack.mjs +103 -4
- package/dist/esm/trie.mjs +106 -0
- package/dist/esm-legacy/binary-tree.mjs +5933 -1772
- package/dist/esm-legacy/graph.mjs +422 -14
- package/dist/esm-legacy/hash.mjs +95 -7
- package/dist/esm-legacy/heap.mjs +174 -16
- package/dist/esm-legacy/index.mjs +8154 -2854
- package/dist/esm-legacy/linked-list.mjs +443 -2
- package/dist/esm-legacy/matrix.mjs +56 -0
- package/dist/esm-legacy/priority-queue.mjs +172 -14
- package/dist/esm-legacy/queue.mjs +435 -0
- package/dist/esm-legacy/stack.mjs +103 -4
- package/dist/esm-legacy/trie.mjs +106 -0
- package/dist/types/data-structures/base/iterable-element-base.d.ts +17 -0
- package/dist/types/data-structures/base/linear-base.d.ts +6 -0
- package/dist/types/data-structures/binary-tree/avl-tree.d.ts +86 -2
- package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +98 -0
- package/dist/types/data-structures/binary-tree/binary-tree.d.ts +191 -15
- package/dist/types/data-structures/binary-tree/bst.d.ts +171 -3
- package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +136 -8
- package/dist/types/data-structures/binary-tree/segment-tree.d.ts +42 -0
- package/dist/types/data-structures/binary-tree/tree-map.d.ts +1061 -167
- package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +1232 -355
- package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +916 -194
- package/dist/types/data-structures/binary-tree/tree-set.d.ts +1078 -141
- package/dist/types/data-structures/graph/directed-graph.d.ts +70 -0
- package/dist/types/data-structures/graph/undirected-graph.d.ts +63 -0
- package/dist/types/data-structures/hash/hash-map.d.ts +84 -6
- package/dist/types/data-structures/heap/heap.d.ts +140 -12
- package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +150 -2
- package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +106 -1
- package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +126 -0
- package/dist/types/data-structures/matrix/matrix.d.ts +56 -0
- package/dist/types/data-structures/queue/deque.d.ts +171 -0
- package/dist/types/data-structures/queue/queue.d.ts +97 -0
- package/dist/types/data-structures/stack/stack.d.ts +72 -2
- package/dist/types/data-structures/trie/trie.d.ts +84 -0
- package/dist/types/interfaces/binary-tree.d.ts +2 -3
- package/dist/umd/data-structure-typed.js +7784 -2484
- package/dist/umd/data-structure-typed.min.js +4 -4
- package/docs-site-docusaurus/docs/api/classes/AVLTree.md +188 -200
- package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +11 -11
- package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +62 -62
- package/docs-site-docusaurus/docs/api/classes/BST.md +183 -195
- package/docs-site-docusaurus/docs/api/classes/BSTNode.md +13 -13
- package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +15 -15
- package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +143 -155
- package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +13 -13
- package/docs-site-docusaurus/docs/api/classes/Deque.md +99 -85
- package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +73 -73
- package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +100 -70
- package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +8 -8
- package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +12 -12
- package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +1 -1
- package/docs-site-docusaurus/docs/api/classes/HashMap.md +38 -38
- package/docs-site-docusaurus/docs/api/classes/Heap.md +96 -85
- package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +25 -25
- package/docs-site-docusaurus/docs/api/classes/IterableEntryBase.md +23 -23
- package/docs-site-docusaurus/docs/api/classes/LinearBase.md +48 -48
- package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +52 -52
- package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +46 -42
- package/docs-site-docusaurus/docs/api/classes/LinkedListNode.md +6 -6
- package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +74 -74
- package/docs-site-docusaurus/docs/api/classes/MapGraph.md +73 -73
- package/docs-site-docusaurus/docs/api/classes/Matrix.md +31 -31
- package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +104 -89
- package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +104 -89
- package/docs-site-docusaurus/docs/api/classes/MinHeap.md +104 -89
- package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +104 -89
- package/docs-site-docusaurus/docs/api/classes/Navigator.md +5 -5
- package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +103 -88
- package/docs-site-docusaurus/docs/api/classes/Queue.md +111 -59
- package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +200 -212
- package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +10 -10
- package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +75 -75
- package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +6 -6
- package/docs-site-docusaurus/docs/api/classes/SkipList.md +37 -37
- package/docs-site-docusaurus/docs/api/classes/Stack.md +42 -42
- package/docs-site-docusaurus/docs/api/classes/TreeMap.md +107 -36
- package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +43 -43
- package/docs-site-docusaurus/docs/api/classes/TreeSet.md +106 -35
- package/docs-site-docusaurus/docs/api/classes/Trie.md +43 -43
- package/docs-site-docusaurus/docs/api/classes/TrieNode.md +8 -8
- package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +72 -72
- package/docs-site-docusaurus/docs/guide/architecture.md +75 -7
- package/docs-site-docusaurus/docs/guide/concepts.md +53 -34
- package/docs-site-docusaurus/docs/guide/faq.md +53 -0
- package/docs-site-docusaurus/docs/guide/guides.md +8 -9
- package/docs-site-docusaurus/docs/guide/integrations.md +74 -177
- package/docs-site-docusaurus/docs/guide/overview.md +131 -17
- package/docs-site-docusaurus/src/pages/index.tsx +4 -0
- package/docs-site-docusaurus/typedoc.json +1 -0
- package/jest.integration.config.js +1 -2
- package/package.json +10 -7
- package/src/data-structures/base/iterable-element-base.ts +32 -0
- package/src/data-structures/base/linear-base.ts +11 -0
- package/src/data-structures/binary-tree/avl-tree.ts +88 -5
- package/src/data-structures/binary-tree/binary-indexed-tree.ts +98 -0
- package/src/data-structures/binary-tree/binary-tree.ts +242 -81
- package/src/data-structures/binary-tree/bst.ts +173 -7
- package/src/data-structures/binary-tree/red-black-tree.ts +139 -15
- package/src/data-structures/binary-tree/segment-tree.ts +42 -0
- package/src/data-structures/binary-tree/tree-map.ts +948 -36
- package/src/data-structures/binary-tree/tree-multi-map.ts +893 -13
- package/src/data-structures/binary-tree/tree-multi-set.ts +761 -33
- package/src/data-structures/binary-tree/tree-set.ts +1260 -251
- package/src/data-structures/graph/directed-graph.ts +71 -1
- package/src/data-structures/graph/undirected-graph.ts +64 -1
- package/src/data-structures/hash/hash-map.ts +100 -12
- package/src/data-structures/heap/heap.ts +149 -19
- package/src/data-structures/linked-list/doubly-linked-list.ts +178 -2
- package/src/data-structures/linked-list/singly-linked-list.ts +106 -1
- package/src/data-structures/linked-list/skip-linked-list.ts +126 -0
- package/src/data-structures/matrix/matrix.ts +56 -0
- package/src/data-structures/queue/deque.ts +187 -0
- package/src/data-structures/queue/queue.ts +109 -0
- package/src/data-structures/stack/stack.ts +75 -5
- package/src/data-structures/trie/trie.ts +84 -0
- package/src/interfaces/binary-tree.ts +1 -9
- package/.vitepress/cache/deps_temp_51f5f1b0/chunk-7OIKW5WK.js +0 -12984
- package/.vitepress/cache/deps_temp_51f5f1b0/package.json +0 -3
- package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vue_devtools-api.js +0 -4505
- package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vueuse_core.js +0 -9731
- package/.vitepress/cache/deps_temp_51f5f1b0/vue.js +0 -347
package/dist/cjs/matrix.cjs
CHANGED
|
@@ -149,6 +149,13 @@ var Matrix = class _Matrix {
|
|
|
149
149
|
|
|
150
150
|
|
|
151
151
|
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
152
159
|
|
|
153
160
|
|
|
154
161
|
|
|
@@ -217,6 +224,13 @@ var Matrix = class _Matrix {
|
|
|
217
224
|
|
|
218
225
|
|
|
219
226
|
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
|
|
220
234
|
|
|
221
235
|
|
|
222
236
|
|
|
@@ -281,6 +295,13 @@ var Matrix = class _Matrix {
|
|
|
281
295
|
|
|
282
296
|
|
|
283
297
|
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
|
|
284
305
|
|
|
285
306
|
|
|
286
307
|
|
|
@@ -367,6 +388,13 @@ var Matrix = class _Matrix {
|
|
|
367
388
|
|
|
368
389
|
|
|
369
390
|
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
|
|
370
398
|
|
|
371
399
|
|
|
372
400
|
|
|
@@ -436,6 +464,13 @@ var Matrix = class _Matrix {
|
|
|
436
464
|
|
|
437
465
|
|
|
438
466
|
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
|
|
439
474
|
|
|
440
475
|
|
|
441
476
|
|
|
@@ -527,6 +562,13 @@ var Matrix = class _Matrix {
|
|
|
527
562
|
|
|
528
563
|
|
|
529
564
|
|
|
565
|
+
|
|
566
|
+
|
|
567
|
+
|
|
568
|
+
|
|
569
|
+
|
|
570
|
+
|
|
571
|
+
|
|
530
572
|
|
|
531
573
|
|
|
532
574
|
|
|
@@ -605,6 +647,13 @@ var Matrix = class _Matrix {
|
|
|
605
647
|
|
|
606
648
|
|
|
607
649
|
|
|
650
|
+
|
|
651
|
+
|
|
652
|
+
|
|
653
|
+
|
|
654
|
+
|
|
655
|
+
|
|
656
|
+
|
|
608
657
|
|
|
609
658
|
|
|
610
659
|
|
|
@@ -708,6 +757,13 @@ var Matrix = class _Matrix {
|
|
|
708
757
|
|
|
709
758
|
|
|
710
759
|
|
|
760
|
+
|
|
761
|
+
|
|
762
|
+
|
|
763
|
+
|
|
764
|
+
|
|
765
|
+
|
|
766
|
+
|
|
711
767
|
|
|
712
768
|
|
|
713
769
|
|
|
@@ -186,6 +186,35 @@ var IterableElementBase = class {
|
|
|
186
186
|
for (const ele of this) if (ele === element) return true;
|
|
187
187
|
return false;
|
|
188
188
|
}
|
|
189
|
+
/**
|
|
190
|
+
* Check whether a value exists (Array-compatible alias for `has`).
|
|
191
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
|
|
192
|
+
* @param element - Element to search for (uses `===`).
|
|
193
|
+
* @returns `true` if found.
|
|
194
|
+
*/
|
|
195
|
+
includes(element) {
|
|
196
|
+
return this.has(element);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Return an iterator of `[index, value]` pairs (Array-compatible).
|
|
200
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
|
|
201
|
+
*/
|
|
202
|
+
*entries() {
|
|
203
|
+
let index = 0;
|
|
204
|
+
for (const value of this) {
|
|
205
|
+
yield [index++, value];
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Return an iterator of numeric indices (Array-compatible).
|
|
210
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
|
|
211
|
+
*/
|
|
212
|
+
*keys() {
|
|
213
|
+
let index = 0;
|
|
214
|
+
for (const _ of this) {
|
|
215
|
+
yield index++;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
189
218
|
/**
|
|
190
219
|
* Reduces all elements to a single accumulated value.
|
|
191
220
|
*
|
|
@@ -318,6 +347,13 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
318
347
|
|
|
319
348
|
|
|
320
349
|
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
|
|
321
357
|
|
|
322
358
|
|
|
323
359
|
|
|
@@ -374,7 +410,7 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
374
410
|
}
|
|
375
411
|
/**
|
|
376
412
|
* Insert an element.
|
|
377
|
-
* @remarks Time O(
|
|
413
|
+
* @remarks Time O(log N) amortized, Space O(1)
|
|
378
414
|
* @param element - Element to insert.
|
|
379
415
|
* @returns True.
|
|
380
416
|
|
|
@@ -404,6 +440,13 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
404
440
|
|
|
405
441
|
|
|
406
442
|
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
|
|
447
|
+
|
|
448
|
+
|
|
449
|
+
|
|
407
450
|
|
|
408
451
|
|
|
409
452
|
|
|
@@ -461,6 +504,13 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
461
504
|
|
|
462
505
|
|
|
463
506
|
|
|
507
|
+
|
|
508
|
+
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
|
|
464
514
|
|
|
465
515
|
|
|
466
516
|
|
|
@@ -524,7 +574,41 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
524
574
|
|
|
525
575
|
|
|
526
576
|
|
|
577
|
+
|
|
578
|
+
|
|
579
|
+
|
|
527
580
|
|
|
581
|
+
|
|
582
|
+
|
|
583
|
+
|
|
584
|
+
* @example
|
|
585
|
+
* // Heap with custom comparator (MaxHeap behavior)
|
|
586
|
+
* interface Task {
|
|
587
|
+
* id: number;
|
|
588
|
+
* priority: number;
|
|
589
|
+
* name: string;
|
|
590
|
+
* }
|
|
591
|
+
*
|
|
592
|
+
* // Custom comparator for max heap behavior (higher priority first)
|
|
593
|
+
* const tasks: Task[] = [
|
|
594
|
+
* { id: 1, priority: 5, name: 'Email' },
|
|
595
|
+
* { id: 2, priority: 3, name: 'Chat' },
|
|
596
|
+
* { id: 3, priority: 8, name: 'Alert' }
|
|
597
|
+
* ];
|
|
598
|
+
*
|
|
599
|
+
* const maxHeap = new Heap(tasks, {
|
|
600
|
+
* comparator: (a: Task, b: Task) => b.priority - a.priority
|
|
601
|
+
* });
|
|
602
|
+
*
|
|
603
|
+
* console.log(maxHeap.size); // 3;
|
|
604
|
+
*
|
|
605
|
+
* // Peek returns highest priority task
|
|
606
|
+
* const topTask = maxHeap.peek();
|
|
607
|
+
* console.log(topTask?.priority); // 8;
|
|
608
|
+
* console.log(topTask?.name); // 'Alert';
|
|
609
|
+
*/
|
|
610
|
+
/**
|
|
611
|
+
* @deprecated Use `pop` instead. Will be removed in a future major version.
|
|
528
612
|
|
|
529
613
|
|
|
530
614
|
|
|
@@ -555,6 +639,14 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
555
639
|
* console.log(topTask?.name); // 'Alert';
|
|
556
640
|
*/
|
|
557
641
|
poll() {
|
|
642
|
+
return this.pop();
|
|
643
|
+
}
|
|
644
|
+
/**
|
|
645
|
+
* Remove and return the top element (min or max depending on comparator).
|
|
646
|
+
* @remarks Time O(log N) amortized, Space O(1)
|
|
647
|
+
* @returns The removed top element, or undefined if empty.
|
|
648
|
+
*/
|
|
649
|
+
pop() {
|
|
558
650
|
if (this.elements.length === 0) return;
|
|
559
651
|
const value = this.elements[0];
|
|
560
652
|
const last = this.elements.pop();
|
|
@@ -595,6 +687,13 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
595
687
|
|
|
596
688
|
|
|
597
689
|
|
|
690
|
+
|
|
691
|
+
|
|
692
|
+
|
|
693
|
+
|
|
694
|
+
|
|
695
|
+
|
|
696
|
+
|
|
598
697
|
|
|
599
698
|
|
|
600
699
|
|
|
@@ -695,6 +794,13 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
695
794
|
|
|
696
795
|
|
|
697
796
|
|
|
797
|
+
|
|
798
|
+
|
|
799
|
+
|
|
800
|
+
|
|
801
|
+
|
|
802
|
+
|
|
803
|
+
|
|
698
804
|
|
|
699
805
|
|
|
700
806
|
|
|
@@ -742,6 +848,13 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
742
848
|
|
|
743
849
|
|
|
744
850
|
|
|
851
|
+
|
|
852
|
+
|
|
853
|
+
|
|
854
|
+
|
|
855
|
+
|
|
856
|
+
|
|
857
|
+
|
|
745
858
|
|
|
746
859
|
|
|
747
860
|
|
|
@@ -759,16 +872,6 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
759
872
|
clear() {
|
|
760
873
|
this._elements = [];
|
|
761
874
|
}
|
|
762
|
-
/**
|
|
763
|
-
* Replace the backing array and rebuild the heap.
|
|
764
|
-
* @remarks Time O(N), Space O(N)
|
|
765
|
-
* @param elements - Iterable used to refill the heap.
|
|
766
|
-
* @returns Array of per-node results from fixing steps.
|
|
767
|
-
*/
|
|
768
|
-
refill(elements) {
|
|
769
|
-
this._elements = Array.from(elements);
|
|
770
|
-
return this.fix();
|
|
771
|
-
}
|
|
772
875
|
/**
|
|
773
876
|
* Check if an equal element exists in the heap.
|
|
774
877
|
* @remarks Time O(N), Space O(1)
|
|
@@ -792,6 +895,13 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
792
895
|
|
|
793
896
|
|
|
794
897
|
|
|
898
|
+
|
|
899
|
+
|
|
900
|
+
|
|
901
|
+
|
|
902
|
+
|
|
903
|
+
|
|
904
|
+
|
|
795
905
|
|
|
796
906
|
|
|
797
907
|
|
|
@@ -839,6 +949,13 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
839
949
|
|
|
840
950
|
|
|
841
951
|
|
|
952
|
+
|
|
953
|
+
|
|
954
|
+
|
|
955
|
+
|
|
956
|
+
|
|
957
|
+
|
|
958
|
+
|
|
842
959
|
|
|
843
960
|
|
|
844
961
|
|
|
@@ -863,7 +980,7 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
863
980
|
}
|
|
864
981
|
if (index < 0) return false;
|
|
865
982
|
if (index === 0) {
|
|
866
|
-
this.
|
|
983
|
+
this.pop();
|
|
867
984
|
} else if (index === this.elements.length - 1) {
|
|
868
985
|
this.elements.pop();
|
|
869
986
|
} else {
|
|
@@ -873,13 +990,19 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
873
990
|
}
|
|
874
991
|
return true;
|
|
875
992
|
}
|
|
993
|
+
/**
|
|
994
|
+
* @deprecated Use `deleteWhere` instead. Will be removed in a future major version.
|
|
995
|
+
*/
|
|
996
|
+
deleteBy(predicate) {
|
|
997
|
+
return this.deleteWhere(predicate);
|
|
998
|
+
}
|
|
876
999
|
/**
|
|
877
1000
|
* Delete the first element that matches a predicate.
|
|
878
1001
|
* @remarks Time O(N), Space O(1)
|
|
879
1002
|
* @param predicate - Function (element, index, heap) → boolean.
|
|
880
1003
|
* @returns True if an element was removed.
|
|
881
1004
|
*/
|
|
882
|
-
|
|
1005
|
+
deleteWhere(predicate) {
|
|
883
1006
|
let idx = -1;
|
|
884
1007
|
for (let i = 0; i < this.elements.length; i++) {
|
|
885
1008
|
if (predicate(this.elements[i], i, this)) {
|
|
@@ -889,7 +1012,7 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
889
1012
|
}
|
|
890
1013
|
if (idx < 0) return false;
|
|
891
1014
|
if (idx === 0) {
|
|
892
|
-
this.
|
|
1015
|
+
this.pop();
|
|
893
1016
|
} else if (idx === this.elements.length - 1) {
|
|
894
1017
|
this.elements.pop();
|
|
895
1018
|
} else {
|
|
@@ -932,6 +1055,13 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
932
1055
|
|
|
933
1056
|
|
|
934
1057
|
|
|
1058
|
+
|
|
1059
|
+
|
|
1060
|
+
|
|
1061
|
+
|
|
1062
|
+
|
|
1063
|
+
|
|
1064
|
+
|
|
935
1065
|
|
|
936
1066
|
|
|
937
1067
|
|
|
@@ -1012,6 +1142,13 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
1012
1142
|
|
|
1013
1143
|
|
|
1014
1144
|
|
|
1145
|
+
|
|
1146
|
+
|
|
1147
|
+
|
|
1148
|
+
|
|
1149
|
+
|
|
1150
|
+
|
|
1151
|
+
|
|
1015
1152
|
|
|
1016
1153
|
|
|
1017
1154
|
|
|
@@ -1065,6 +1202,13 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
1065
1202
|
|
|
1066
1203
|
|
|
1067
1204
|
|
|
1205
|
+
|
|
1206
|
+
|
|
1207
|
+
|
|
1208
|
+
|
|
1209
|
+
|
|
1210
|
+
|
|
1211
|
+
|
|
1068
1212
|
|
|
1069
1213
|
|
|
1070
1214
|
|
|
@@ -1117,6 +1261,13 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
1117
1261
|
|
|
1118
1262
|
|
|
1119
1263
|
|
|
1264
|
+
|
|
1265
|
+
|
|
1266
|
+
|
|
1267
|
+
|
|
1268
|
+
|
|
1269
|
+
|
|
1270
|
+
|
|
1120
1271
|
|
|
1121
1272
|
|
|
1122
1273
|
|
|
@@ -1176,6 +1327,13 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
1176
1327
|
|
|
1177
1328
|
|
|
1178
1329
|
|
|
1330
|
+
|
|
1331
|
+
|
|
1332
|
+
|
|
1333
|
+
|
|
1334
|
+
|
|
1335
|
+
|
|
1336
|
+
|
|
1179
1337
|
|
|
1180
1338
|
|
|
1181
1339
|
|