data-structure-typed 2.5.3 → 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 +1 -1
- package/MIGRATION.md +48 -0
- package/README.md +20 -2
- package/README_CN.md +20 -2
- package/SPECIFICATION.md +24 -0
- package/SPECIFICATION.zh-CN.md +24 -0
- package/dist/cjs/binary-tree.cjs +1897 -19
- package/dist/cjs/graph.cjs +174 -0
- package/dist/cjs/hash.cjs +33 -0
- package/dist/cjs/heap.cjs +71 -0
- package/dist/cjs/index.cjs +2383 -3
- package/dist/cjs/linked-list.cjs +224 -2
- package/dist/cjs/matrix.cjs +24 -0
- package/dist/cjs/priority-queue.cjs +71 -0
- package/dist/cjs/queue.cjs +221 -1
- package/dist/cjs/stack.cjs +59 -0
- package/dist/cjs/trie.cjs +62 -0
- package/dist/cjs-legacy/binary-tree.cjs +1897 -19
- package/dist/cjs-legacy/graph.cjs +174 -0
- package/dist/cjs-legacy/hash.cjs +33 -0
- package/dist/cjs-legacy/heap.cjs +71 -0
- package/dist/cjs-legacy/index.cjs +2383 -3
- package/dist/cjs-legacy/linked-list.cjs +224 -2
- package/dist/cjs-legacy/matrix.cjs +24 -0
- package/dist/cjs-legacy/priority-queue.cjs +71 -0
- package/dist/cjs-legacy/queue.cjs +221 -1
- package/dist/cjs-legacy/stack.cjs +59 -0
- package/dist/cjs-legacy/trie.cjs +62 -0
- package/dist/esm/binary-tree.mjs +1897 -19
- package/dist/esm/graph.mjs +174 -0
- package/dist/esm/hash.mjs +33 -0
- package/dist/esm/heap.mjs +71 -0
- package/dist/esm/index.mjs +2383 -3
- package/dist/esm/linked-list.mjs +224 -2
- package/dist/esm/matrix.mjs +24 -0
- package/dist/esm/priority-queue.mjs +71 -0
- package/dist/esm/queue.mjs +221 -1
- package/dist/esm/stack.mjs +59 -0
- package/dist/esm/trie.mjs +62 -0
- package/dist/esm-legacy/binary-tree.mjs +1897 -19
- package/dist/esm-legacy/graph.mjs +174 -0
- package/dist/esm-legacy/hash.mjs +33 -0
- package/dist/esm-legacy/heap.mjs +71 -0
- package/dist/esm-legacy/index.mjs +2383 -3
- package/dist/esm-legacy/linked-list.mjs +224 -2
- package/dist/esm-legacy/matrix.mjs +24 -0
- package/dist/esm-legacy/priority-queue.mjs +71 -0
- package/dist/esm-legacy/queue.mjs +221 -1
- package/dist/esm-legacy/stack.mjs +59 -0
- package/dist/esm-legacy/trie.mjs +62 -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 +36 -0
- package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +42 -0
- package/dist/types/data-structures/binary-tree/binary-tree.d.ts +75 -0
- package/dist/types/data-structures/binary-tree/bst.d.ts +72 -0
- package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +57 -0
- package/dist/types/data-structures/binary-tree/segment-tree.d.ts +18 -0
- package/dist/types/data-structures/binary-tree/tree-map.d.ts +375 -0
- package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +389 -0
- package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +330 -0
- package/dist/types/data-structures/binary-tree/tree-set.d.ts +438 -0
- package/dist/types/data-structures/graph/directed-graph.d.ts +30 -0
- package/dist/types/data-structures/graph/undirected-graph.d.ts +27 -0
- package/dist/types/data-structures/hash/hash-map.d.ts +33 -0
- package/dist/types/data-structures/heap/heap.d.ts +42 -0
- package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +75 -2
- package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +45 -0
- package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +54 -0
- package/dist/types/data-structures/matrix/matrix.d.ts +24 -0
- package/dist/types/data-structures/queue/deque.d.ts +90 -1
- package/dist/types/data-structures/queue/queue.d.ts +36 -0
- package/dist/types/data-structures/stack/stack.d.ts +30 -0
- package/dist/types/data-structures/trie/trie.d.ts +36 -0
- package/dist/umd/data-structure-typed.js +2383 -3
- package/dist/umd/data-structure-typed.min.js +3 -3
- package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +14 -10
- package/jest.integration.config.js +1 -2
- package/package.json +9 -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 +36 -0
- package/src/data-structures/binary-tree/binary-indexed-tree.ts +42 -0
- package/src/data-structures/binary-tree/binary-tree.ts +75 -0
- package/src/data-structures/binary-tree/bst.ts +72 -0
- package/src/data-structures/binary-tree/red-black-tree.ts +57 -0
- package/src/data-structures/binary-tree/segment-tree.ts +18 -0
- package/src/data-structures/binary-tree/tree-map.ts +375 -0
- package/src/data-structures/binary-tree/tree-multi-map.ts +392 -0
- package/src/data-structures/binary-tree/tree-multi-set.ts +336 -0
- package/src/data-structures/binary-tree/tree-set.ts +492 -0
- package/src/data-structures/graph/directed-graph.ts +30 -0
- package/src/data-structures/graph/undirected-graph.ts +27 -0
- package/src/data-structures/hash/hash-map.ts +33 -0
- package/src/data-structures/heap/heap.ts +42 -0
- package/src/data-structures/linked-list/doubly-linked-list.ts +90 -2
- package/src/data-structures/linked-list/singly-linked-list.ts +45 -0
- package/src/data-structures/linked-list/skip-linked-list.ts +54 -0
- package/src/data-structures/matrix/matrix.ts +24 -0
- package/src/data-structures/queue/deque.ts +103 -1
- package/src/data-structures/queue/queue.ts +36 -0
- package/src/data-structures/stack/stack.ts +30 -0
- package/src/data-structures/trie/trie.ts +36 -0
|
@@ -183,6 +183,35 @@ var _IterableElementBase = class _IterableElementBase {
|
|
|
183
183
|
for (const ele of this) if (ele === element) return true;
|
|
184
184
|
return false;
|
|
185
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Check whether a value exists (Array-compatible alias for `has`).
|
|
188
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
|
|
189
|
+
* @param element - Element to search for (uses `===`).
|
|
190
|
+
* @returns `true` if found.
|
|
191
|
+
*/
|
|
192
|
+
includes(element) {
|
|
193
|
+
return this.has(element);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Return an iterator of `[index, value]` pairs (Array-compatible).
|
|
197
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
|
|
198
|
+
*/
|
|
199
|
+
*entries() {
|
|
200
|
+
let index = 0;
|
|
201
|
+
for (const value of this) {
|
|
202
|
+
yield [index++, value];
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Return an iterator of numeric indices (Array-compatible).
|
|
207
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
|
|
208
|
+
*/
|
|
209
|
+
*keys() {
|
|
210
|
+
let index = 0;
|
|
211
|
+
for (const _ of this) {
|
|
212
|
+
yield index++;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
186
215
|
/**
|
|
187
216
|
* Reduces all elements to a single accumulated value.
|
|
188
217
|
*
|
|
@@ -331,6 +360,9 @@ var _Heap = class _Heap extends IterableElementBase {
|
|
|
331
360
|
|
|
332
361
|
|
|
333
362
|
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
|
|
334
366
|
|
|
335
367
|
|
|
336
368
|
|
|
@@ -422,6 +454,9 @@ var _Heap = class _Heap extends IterableElementBase {
|
|
|
422
454
|
|
|
423
455
|
|
|
424
456
|
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
|
|
425
460
|
|
|
426
461
|
|
|
427
462
|
|
|
@@ -483,6 +518,9 @@ var _Heap = class _Heap extends IterableElementBase {
|
|
|
483
518
|
|
|
484
519
|
|
|
485
520
|
|
|
521
|
+
|
|
522
|
+
|
|
523
|
+
|
|
486
524
|
|
|
487
525
|
|
|
488
526
|
|
|
@@ -577,6 +615,9 @@ var _Heap = class _Heap extends IterableElementBase {
|
|
|
577
615
|
*/
|
|
578
616
|
/**
|
|
579
617
|
* @deprecated Use `pop` instead. Will be removed in a future major version.
|
|
618
|
+
|
|
619
|
+
|
|
620
|
+
|
|
580
621
|
* @example
|
|
581
622
|
* // Heap with custom comparator (MaxHeap behavior)
|
|
582
623
|
* interface Task {
|
|
@@ -660,6 +701,9 @@ var _Heap = class _Heap extends IterableElementBase {
|
|
|
660
701
|
|
|
661
702
|
|
|
662
703
|
|
|
704
|
+
|
|
705
|
+
|
|
706
|
+
|
|
663
707
|
|
|
664
708
|
|
|
665
709
|
|
|
@@ -764,6 +808,9 @@ var _Heap = class _Heap extends IterableElementBase {
|
|
|
764
808
|
|
|
765
809
|
|
|
766
810
|
|
|
811
|
+
|
|
812
|
+
|
|
813
|
+
|
|
767
814
|
|
|
768
815
|
|
|
769
816
|
|
|
@@ -815,6 +862,9 @@ var _Heap = class _Heap extends IterableElementBase {
|
|
|
815
862
|
|
|
816
863
|
|
|
817
864
|
|
|
865
|
+
|
|
866
|
+
|
|
867
|
+
|
|
818
868
|
|
|
819
869
|
|
|
820
870
|
|
|
@@ -859,6 +909,9 @@ var _Heap = class _Heap extends IterableElementBase {
|
|
|
859
909
|
|
|
860
910
|
|
|
861
911
|
|
|
912
|
+
|
|
913
|
+
|
|
914
|
+
|
|
862
915
|
|
|
863
916
|
|
|
864
917
|
|
|
@@ -910,6 +963,9 @@ var _Heap = class _Heap extends IterableElementBase {
|
|
|
910
963
|
|
|
911
964
|
|
|
912
965
|
|
|
966
|
+
|
|
967
|
+
|
|
968
|
+
|
|
913
969
|
|
|
914
970
|
|
|
915
971
|
|
|
@@ -1013,6 +1069,9 @@ var _Heap = class _Heap extends IterableElementBase {
|
|
|
1013
1069
|
|
|
1014
1070
|
|
|
1015
1071
|
|
|
1072
|
+
|
|
1073
|
+
|
|
1074
|
+
|
|
1016
1075
|
|
|
1017
1076
|
|
|
1018
1077
|
|
|
@@ -1097,6 +1156,9 @@ var _Heap = class _Heap extends IterableElementBase {
|
|
|
1097
1156
|
|
|
1098
1157
|
|
|
1099
1158
|
|
|
1159
|
+
|
|
1160
|
+
|
|
1161
|
+
|
|
1100
1162
|
|
|
1101
1163
|
|
|
1102
1164
|
|
|
@@ -1154,6 +1216,9 @@ var _Heap = class _Heap extends IterableElementBase {
|
|
|
1154
1216
|
|
|
1155
1217
|
|
|
1156
1218
|
|
|
1219
|
+
|
|
1220
|
+
|
|
1221
|
+
|
|
1157
1222
|
|
|
1158
1223
|
|
|
1159
1224
|
|
|
@@ -1210,6 +1275,9 @@ var _Heap = class _Heap extends IterableElementBase {
|
|
|
1210
1275
|
|
|
1211
1276
|
|
|
1212
1277
|
|
|
1278
|
+
|
|
1279
|
+
|
|
1280
|
+
|
|
1213
1281
|
|
|
1214
1282
|
|
|
1215
1283
|
|
|
@@ -1273,6 +1341,9 @@ var _Heap = class _Heap extends IterableElementBase {
|
|
|
1273
1341
|
|
|
1274
1342
|
|
|
1275
1343
|
|
|
1344
|
+
|
|
1345
|
+
|
|
1346
|
+
|
|
1276
1347
|
|
|
1277
1348
|
|
|
1278
1349
|
|
|
@@ -158,6 +158,35 @@ var _IterableElementBase = class _IterableElementBase {
|
|
|
158
158
|
for (const ele of this) if (ele === element) return true;
|
|
159
159
|
return false;
|
|
160
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* Check whether a value exists (Array-compatible alias for `has`).
|
|
163
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
|
|
164
|
+
* @param element - Element to search for (uses `===`).
|
|
165
|
+
* @returns `true` if found.
|
|
166
|
+
*/
|
|
167
|
+
includes(element) {
|
|
168
|
+
return this.has(element);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Return an iterator of `[index, value]` pairs (Array-compatible).
|
|
172
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
|
|
173
|
+
*/
|
|
174
|
+
*entries() {
|
|
175
|
+
let index = 0;
|
|
176
|
+
for (const value of this) {
|
|
177
|
+
yield [index++, value];
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Return an iterator of numeric indices (Array-compatible).
|
|
182
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
|
|
183
|
+
*/
|
|
184
|
+
*keys() {
|
|
185
|
+
let index = 0;
|
|
186
|
+
for (const _ of this) {
|
|
187
|
+
yield index++;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
161
190
|
/**
|
|
162
191
|
* Reduces all elements to a single accumulated value.
|
|
163
192
|
*
|
|
@@ -466,6 +495,16 @@ var _LinearBase = class _LinearBase extends IterableElementBase {
|
|
|
466
495
|
}
|
|
467
496
|
return this;
|
|
468
497
|
}
|
|
498
|
+
/**
|
|
499
|
+
* Return a new instance of the same type with elements in reverse order (non-mutating).
|
|
500
|
+
* @remarks Provided for familiarity when migrating from Array (ES2023 `toReversed`). Time O(n), Space O(n).
|
|
501
|
+
* @returns A new reversed instance.
|
|
502
|
+
*/
|
|
503
|
+
toReversed() {
|
|
504
|
+
const cloned = this.clone();
|
|
505
|
+
cloned.reverse();
|
|
506
|
+
return cloned;
|
|
507
|
+
}
|
|
469
508
|
};
|
|
470
509
|
__name(_LinearBase, "LinearBase");
|
|
471
510
|
var LinearBase = _LinearBase;
|
|
@@ -764,6 +803,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
764
803
|
|
|
765
804
|
|
|
766
805
|
|
|
806
|
+
|
|
807
|
+
|
|
808
|
+
|
|
767
809
|
|
|
768
810
|
|
|
769
811
|
|
|
@@ -835,6 +877,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
835
877
|
|
|
836
878
|
|
|
837
879
|
|
|
880
|
+
|
|
881
|
+
|
|
882
|
+
|
|
838
883
|
|
|
839
884
|
|
|
840
885
|
|
|
@@ -912,6 +957,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
912
957
|
|
|
913
958
|
|
|
914
959
|
|
|
960
|
+
|
|
961
|
+
|
|
962
|
+
|
|
915
963
|
|
|
916
964
|
|
|
917
965
|
|
|
@@ -970,6 +1018,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
970
1018
|
|
|
971
1019
|
|
|
972
1020
|
|
|
1021
|
+
|
|
1022
|
+
|
|
1023
|
+
|
|
973
1024
|
|
|
974
1025
|
|
|
975
1026
|
|
|
@@ -1089,6 +1140,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1089
1140
|
|
|
1090
1141
|
|
|
1091
1142
|
|
|
1143
|
+
|
|
1144
|
+
|
|
1145
|
+
|
|
1092
1146
|
|
|
1093
1147
|
|
|
1094
1148
|
|
|
@@ -1152,6 +1206,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1152
1206
|
|
|
1153
1207
|
|
|
1154
1208
|
|
|
1209
|
+
|
|
1210
|
+
|
|
1211
|
+
|
|
1155
1212
|
|
|
1156
1213
|
|
|
1157
1214
|
|
|
@@ -1204,6 +1261,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1204
1261
|
|
|
1205
1262
|
|
|
1206
1263
|
|
|
1264
|
+
|
|
1265
|
+
|
|
1266
|
+
|
|
1207
1267
|
|
|
1208
1268
|
|
|
1209
1269
|
|
|
@@ -1262,6 +1322,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1262
1322
|
|
|
1263
1323
|
|
|
1264
1324
|
|
|
1325
|
+
|
|
1326
|
+
|
|
1327
|
+
|
|
1265
1328
|
|
|
1266
1329
|
|
|
1267
1330
|
|
|
@@ -1325,6 +1388,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1325
1388
|
|
|
1326
1389
|
|
|
1327
1390
|
|
|
1391
|
+
|
|
1392
|
+
|
|
1393
|
+
|
|
1328
1394
|
|
|
1329
1395
|
|
|
1330
1396
|
|
|
@@ -1396,6 +1462,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1396
1462
|
|
|
1397
1463
|
|
|
1398
1464
|
|
|
1465
|
+
|
|
1466
|
+
|
|
1467
|
+
|
|
1399
1468
|
|
|
1400
1469
|
|
|
1401
1470
|
|
|
@@ -1444,6 +1513,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1444
1513
|
|
|
1445
1514
|
|
|
1446
1515
|
|
|
1516
|
+
|
|
1517
|
+
|
|
1518
|
+
|
|
1447
1519
|
|
|
1448
1520
|
|
|
1449
1521
|
|
|
@@ -1498,6 +1570,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1498
1570
|
|
|
1499
1571
|
|
|
1500
1572
|
|
|
1573
|
+
|
|
1574
|
+
|
|
1575
|
+
|
|
1501
1576
|
|
|
1502
1577
|
|
|
1503
1578
|
|
|
@@ -1718,6 +1793,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1718
1793
|
|
|
1719
1794
|
|
|
1720
1795
|
|
|
1796
|
+
|
|
1797
|
+
|
|
1798
|
+
|
|
1721
1799
|
|
|
1722
1800
|
|
|
1723
1801
|
|
|
@@ -1776,6 +1854,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1776
1854
|
|
|
1777
1855
|
|
|
1778
1856
|
|
|
1857
|
+
|
|
1858
|
+
|
|
1859
|
+
|
|
1779
1860
|
|
|
1780
1861
|
|
|
1781
1862
|
|
|
@@ -1862,6 +1943,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1862
1943
|
|
|
1863
1944
|
|
|
1864
1945
|
|
|
1946
|
+
|
|
1947
|
+
|
|
1948
|
+
|
|
1865
1949
|
|
|
1866
1950
|
|
|
1867
1951
|
|
|
@@ -2100,6 +2184,9 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2100
2184
|
|
|
2101
2185
|
|
|
2102
2186
|
|
|
2187
|
+
|
|
2188
|
+
|
|
2189
|
+
|
|
2103
2190
|
|
|
2104
2191
|
|
|
2105
2192
|
|
|
@@ -2154,6 +2241,9 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2154
2241
|
|
|
2155
2242
|
|
|
2156
2243
|
|
|
2244
|
+
|
|
2245
|
+
|
|
2246
|
+
|
|
2157
2247
|
|
|
2158
2248
|
|
|
2159
2249
|
|
|
@@ -2232,6 +2322,9 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2232
2322
|
|
|
2233
2323
|
|
|
2234
2324
|
|
|
2325
|
+
|
|
2326
|
+
|
|
2327
|
+
|
|
2235
2328
|
|
|
2236
2329
|
|
|
2237
2330
|
|
|
@@ -2298,6 +2391,9 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2298
2391
|
|
|
2299
2392
|
|
|
2300
2393
|
|
|
2394
|
+
|
|
2395
|
+
|
|
2396
|
+
|
|
2301
2397
|
|
|
2302
2398
|
|
|
2303
2399
|
|
|
@@ -2371,6 +2467,9 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2371
2467
|
|
|
2372
2468
|
|
|
2373
2469
|
|
|
2470
|
+
|
|
2471
|
+
|
|
2472
|
+
|
|
2374
2473
|
|
|
2375
2474
|
|
|
2376
2475
|
|
|
@@ -2434,6 +2533,9 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2434
2533
|
|
|
2435
2534
|
|
|
2436
2535
|
|
|
2536
|
+
|
|
2537
|
+
|
|
2538
|
+
|
|
2437
2539
|
|
|
2438
2540
|
|
|
2439
2541
|
|
|
@@ -2490,6 +2592,9 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2490
2592
|
|
|
2491
2593
|
|
|
2492
2594
|
|
|
2595
|
+
|
|
2596
|
+
|
|
2597
|
+
|
|
2493
2598
|
|
|
2494
2599
|
|
|
2495
2600
|
|
|
@@ -2602,6 +2707,9 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2602
2707
|
|
|
2603
2708
|
|
|
2604
2709
|
|
|
2710
|
+
|
|
2711
|
+
|
|
2712
|
+
|
|
2605
2713
|
|
|
2606
2714
|
|
|
2607
2715
|
|
|
@@ -2652,6 +2760,9 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2652
2760
|
|
|
2653
2761
|
|
|
2654
2762
|
|
|
2763
|
+
|
|
2764
|
+
|
|
2765
|
+
|
|
2655
2766
|
|
|
2656
2767
|
|
|
2657
2768
|
|
|
@@ -2725,6 +2836,9 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2725
2836
|
|
|
2726
2837
|
|
|
2727
2838
|
|
|
2839
|
+
|
|
2840
|
+
|
|
2841
|
+
|
|
2728
2842
|
|
|
2729
2843
|
|
|
2730
2844
|
|
|
@@ -2782,6 +2896,9 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2782
2896
|
|
|
2783
2897
|
|
|
2784
2898
|
|
|
2899
|
+
|
|
2900
|
+
|
|
2901
|
+
|
|
2785
2902
|
|
|
2786
2903
|
|
|
2787
2904
|
|
|
@@ -2843,6 +2960,9 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2843
2960
|
|
|
2844
2961
|
|
|
2845
2962
|
|
|
2963
|
+
|
|
2964
|
+
|
|
2965
|
+
|
|
2846
2966
|
|
|
2847
2967
|
|
|
2848
2968
|
|
|
@@ -3153,7 +3273,10 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3153
3273
|
}
|
|
3154
3274
|
/**
|
|
3155
3275
|
* Deque peek at both ends
|
|
3156
|
-
|
|
3276
|
+
|
|
3277
|
+
|
|
3278
|
+
|
|
3279
|
+
* @example
|
|
3157
3280
|
* // Deque peek at both ends
|
|
3158
3281
|
* const deque = new Deque<number>([10, 20, 30, 40, 50]);
|
|
3159
3282
|
*
|
|
@@ -3211,6 +3334,9 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3211
3334
|
|
|
3212
3335
|
|
|
3213
3336
|
|
|
3337
|
+
|
|
3338
|
+
|
|
3339
|
+
|
|
3214
3340
|
|
|
3215
3341
|
|
|
3216
3342
|
|
|
@@ -3278,6 +3404,9 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3278
3404
|
|
|
3279
3405
|
|
|
3280
3406
|
|
|
3407
|
+
|
|
3408
|
+
|
|
3409
|
+
|
|
3281
3410
|
|
|
3282
3411
|
|
|
3283
3412
|
|
|
@@ -3358,6 +3487,9 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3358
3487
|
|
|
3359
3488
|
|
|
3360
3489
|
|
|
3490
|
+
|
|
3491
|
+
|
|
3492
|
+
|
|
3361
3493
|
|
|
3362
3494
|
|
|
3363
3495
|
|
|
@@ -3425,6 +3557,9 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3425
3557
|
|
|
3426
3558
|
|
|
3427
3559
|
|
|
3560
|
+
|
|
3561
|
+
|
|
3562
|
+
|
|
3428
3563
|
|
|
3429
3564
|
|
|
3430
3565
|
|
|
@@ -3493,6 +3628,9 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3493
3628
|
|
|
3494
3629
|
|
|
3495
3630
|
|
|
3631
|
+
|
|
3632
|
+
|
|
3633
|
+
|
|
3496
3634
|
|
|
3497
3635
|
|
|
3498
3636
|
|
|
@@ -3602,6 +3740,9 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3602
3740
|
|
|
3603
3741
|
|
|
3604
3742
|
|
|
3743
|
+
|
|
3744
|
+
|
|
3745
|
+
|
|
3605
3746
|
|
|
3606
3747
|
|
|
3607
3748
|
|
|
@@ -3651,6 +3792,9 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3651
3792
|
|
|
3652
3793
|
|
|
3653
3794
|
|
|
3795
|
+
|
|
3796
|
+
|
|
3797
|
+
|
|
3654
3798
|
|
|
3655
3799
|
|
|
3656
3800
|
|
|
@@ -3704,6 +3848,9 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3704
3848
|
|
|
3705
3849
|
|
|
3706
3850
|
|
|
3851
|
+
|
|
3852
|
+
|
|
3853
|
+
|
|
3707
3854
|
|
|
3708
3855
|
|
|
3709
3856
|
|
|
@@ -3908,6 +4055,9 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3908
4055
|
|
|
3909
4056
|
|
|
3910
4057
|
|
|
4058
|
+
|
|
4059
|
+
|
|
4060
|
+
|
|
3911
4061
|
|
|
3912
4062
|
|
|
3913
4063
|
|
|
@@ -4002,6 +4152,64 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
4002
4152
|
|
|
4003
4153
|
|
|
4004
4154
|
|
|
4155
|
+
|
|
4156
|
+
* @example
|
|
4157
|
+
* // Deque for...of iteration and reverse
|
|
4158
|
+
* const deque = new Deque<string>(['A', 'B', 'C', 'D']);
|
|
4159
|
+
*
|
|
4160
|
+
* // Iterate forward
|
|
4161
|
+
* const forward: string[] = [];
|
|
4162
|
+
* for (const item of deque) {
|
|
4163
|
+
* forward.push(item);
|
|
4164
|
+
* }
|
|
4165
|
+
* console.log(forward); // ['A', 'B', 'C', 'D'];
|
|
4166
|
+
*
|
|
4167
|
+
* // Reverse the deque
|
|
4168
|
+
* deque.reverse();
|
|
4169
|
+
* const backward: string[] = [];
|
|
4170
|
+
* for (const item of deque) {
|
|
4171
|
+
* backward.push(item);
|
|
4172
|
+
* }
|
|
4173
|
+
* console.log(backward); // ['D', 'C', 'B', 'A'];
|
|
4174
|
+
*/
|
|
4175
|
+
/**
|
|
4176
|
+
* Find the last value matching a predicate (scans back-to-front).
|
|
4177
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
|
|
4178
|
+
* @param predicate - Function called with (value, index, deque).
|
|
4179
|
+
* @returns Matching value or undefined.
|
|
4180
|
+
* @example
|
|
4181
|
+
* // Find last matching value
|
|
4182
|
+
* const d = new Deque([1, 2, 3, 4, 5]);
|
|
4183
|
+
* console.log(d.findLast(v => v > 2)); // 5;
|
|
4184
|
+
* console.log(d.findLast(v => v % 2 === 0)); // 4;
|
|
4185
|
+
*/
|
|
4186
|
+
findLast(predicate) {
|
|
4187
|
+
for (let i = this.length - 1; i >= 0; i--) {
|
|
4188
|
+
const val = this.at(i);
|
|
4189
|
+
if (predicate(val, i, this)) return val;
|
|
4190
|
+
}
|
|
4191
|
+
return void 0;
|
|
4192
|
+
}
|
|
4193
|
+
/**
|
|
4194
|
+
* Find the index of the last value matching a predicate (scans back-to-front).
|
|
4195
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
|
|
4196
|
+
* @param predicate - Function called with (value, index, deque).
|
|
4197
|
+
* @returns Matching index, or -1 if not found.
|
|
4198
|
+
* @example
|
|
4199
|
+
* // Find last matching index
|
|
4200
|
+
* const d = new Deque([10, 20, 30, 20, 10]);
|
|
4201
|
+
* console.log(d.findLastIndex(v => v === 20)); // 3;
|
|
4202
|
+
* console.log(d.findLastIndex(v => v === 10)); // 4;
|
|
4203
|
+
*/
|
|
4204
|
+
findLastIndex(predicate) {
|
|
4205
|
+
for (let i = this.length - 1; i >= 0; i--) {
|
|
4206
|
+
if (predicate(this.at(i), i, this)) return i;
|
|
4207
|
+
}
|
|
4208
|
+
return -1;
|
|
4209
|
+
}
|
|
4210
|
+
/**
|
|
4211
|
+
* Deque for...of iteration and reverse
|
|
4212
|
+
|
|
4005
4213
|
|
|
4006
4214
|
* @example
|
|
4007
4215
|
* // Deque for...of iteration and reverse
|
|
@@ -4115,6 +4323,9 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
4115
4323
|
|
|
4116
4324
|
|
|
4117
4325
|
|
|
4326
|
+
|
|
4327
|
+
|
|
4328
|
+
|
|
4118
4329
|
|
|
4119
4330
|
|
|
4120
4331
|
|
|
@@ -4190,6 +4401,9 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
4190
4401
|
|
|
4191
4402
|
|
|
4192
4403
|
|
|
4404
|
+
|
|
4405
|
+
|
|
4406
|
+
|
|
4193
4407
|
|
|
4194
4408
|
|
|
4195
4409
|
|
|
@@ -4248,6 +4462,9 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
4248
4462
|
|
|
4249
4463
|
|
|
4250
4464
|
|
|
4465
|
+
|
|
4466
|
+
|
|
4467
|
+
|
|
4251
4468
|
|
|
4252
4469
|
|
|
4253
4470
|
|
|
@@ -4326,6 +4543,9 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
4326
4543
|
|
|
4327
4544
|
|
|
4328
4545
|
|
|
4546
|
+
|
|
4547
|
+
|
|
4548
|
+
|
|
4329
4549
|
|
|
4330
4550
|
|
|
4331
4551
|
|