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
|
@@ -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;
|
|
@@ -756,6 +795,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
756
795
|
|
|
757
796
|
|
|
758
797
|
|
|
798
|
+
|
|
799
|
+
|
|
800
|
+
|
|
801
|
+
|
|
802
|
+
|
|
803
|
+
|
|
804
|
+
|
|
759
805
|
|
|
760
806
|
|
|
761
807
|
|
|
@@ -823,6 +869,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
823
869
|
|
|
824
870
|
|
|
825
871
|
|
|
872
|
+
|
|
873
|
+
|
|
874
|
+
|
|
875
|
+
|
|
876
|
+
|
|
877
|
+
|
|
878
|
+
|
|
826
879
|
|
|
827
880
|
|
|
828
881
|
|
|
@@ -896,6 +949,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
896
949
|
|
|
897
950
|
|
|
898
951
|
|
|
952
|
+
|
|
953
|
+
|
|
954
|
+
|
|
955
|
+
|
|
956
|
+
|
|
957
|
+
|
|
958
|
+
|
|
899
959
|
|
|
900
960
|
|
|
901
961
|
|
|
@@ -950,6 +1010,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
950
1010
|
|
|
951
1011
|
|
|
952
1012
|
|
|
1013
|
+
|
|
1014
|
+
|
|
1015
|
+
|
|
1016
|
+
|
|
1017
|
+
|
|
1018
|
+
|
|
1019
|
+
|
|
953
1020
|
|
|
954
1021
|
|
|
955
1022
|
|
|
@@ -1065,6 +1132,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1065
1132
|
|
|
1066
1133
|
|
|
1067
1134
|
|
|
1135
|
+
|
|
1136
|
+
|
|
1137
|
+
|
|
1138
|
+
|
|
1139
|
+
|
|
1140
|
+
|
|
1141
|
+
|
|
1068
1142
|
|
|
1069
1143
|
|
|
1070
1144
|
|
|
@@ -1124,6 +1198,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1124
1198
|
|
|
1125
1199
|
|
|
1126
1200
|
|
|
1201
|
+
|
|
1202
|
+
|
|
1203
|
+
|
|
1204
|
+
|
|
1205
|
+
|
|
1206
|
+
|
|
1207
|
+
|
|
1127
1208
|
|
|
1128
1209
|
|
|
1129
1210
|
|
|
@@ -1172,6 +1253,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1172
1253
|
|
|
1173
1254
|
|
|
1174
1255
|
|
|
1256
|
+
|
|
1257
|
+
|
|
1258
|
+
|
|
1259
|
+
|
|
1260
|
+
|
|
1261
|
+
|
|
1262
|
+
|
|
1175
1263
|
|
|
1176
1264
|
|
|
1177
1265
|
|
|
@@ -1226,6 +1314,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1226
1314
|
|
|
1227
1315
|
|
|
1228
1316
|
|
|
1317
|
+
|
|
1318
|
+
|
|
1319
|
+
|
|
1320
|
+
|
|
1321
|
+
|
|
1322
|
+
|
|
1323
|
+
|
|
1229
1324
|
|
|
1230
1325
|
|
|
1231
1326
|
|
|
@@ -1285,6 +1380,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1285
1380
|
|
|
1286
1381
|
|
|
1287
1382
|
|
|
1383
|
+
|
|
1384
|
+
|
|
1385
|
+
|
|
1386
|
+
|
|
1387
|
+
|
|
1388
|
+
|
|
1389
|
+
|
|
1288
1390
|
|
|
1289
1391
|
|
|
1290
1392
|
|
|
@@ -1352,6 +1454,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1352
1454
|
|
|
1353
1455
|
|
|
1354
1456
|
|
|
1457
|
+
|
|
1458
|
+
|
|
1459
|
+
|
|
1460
|
+
|
|
1461
|
+
|
|
1462
|
+
|
|
1463
|
+
|
|
1355
1464
|
|
|
1356
1465
|
|
|
1357
1466
|
|
|
@@ -1396,6 +1505,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1396
1505
|
|
|
1397
1506
|
|
|
1398
1507
|
|
|
1508
|
+
|
|
1509
|
+
|
|
1510
|
+
|
|
1511
|
+
|
|
1512
|
+
|
|
1513
|
+
|
|
1514
|
+
|
|
1399
1515
|
|
|
1400
1516
|
|
|
1401
1517
|
|
|
@@ -1446,6 +1562,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1446
1562
|
|
|
1447
1563
|
|
|
1448
1564
|
|
|
1565
|
+
|
|
1566
|
+
|
|
1567
|
+
|
|
1568
|
+
|
|
1569
|
+
|
|
1570
|
+
|
|
1571
|
+
|
|
1449
1572
|
|
|
1450
1573
|
|
|
1451
1574
|
|
|
@@ -1662,6 +1785,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1662
1785
|
|
|
1663
1786
|
|
|
1664
1787
|
|
|
1788
|
+
|
|
1789
|
+
|
|
1790
|
+
|
|
1791
|
+
|
|
1792
|
+
|
|
1793
|
+
|
|
1794
|
+
|
|
1665
1795
|
|
|
1666
1796
|
|
|
1667
1797
|
|
|
@@ -1716,6 +1846,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1716
1846
|
|
|
1717
1847
|
|
|
1718
1848
|
|
|
1849
|
+
|
|
1850
|
+
|
|
1851
|
+
|
|
1852
|
+
|
|
1853
|
+
|
|
1854
|
+
|
|
1855
|
+
|
|
1719
1856
|
|
|
1720
1857
|
|
|
1721
1858
|
|
|
@@ -1798,6 +1935,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1798
1935
|
|
|
1799
1936
|
|
|
1800
1937
|
|
|
1938
|
+
|
|
1939
|
+
|
|
1940
|
+
|
|
1941
|
+
|
|
1942
|
+
|
|
1943
|
+
|
|
1944
|
+
|
|
1801
1945
|
|
|
1802
1946
|
|
|
1803
1947
|
|
|
@@ -2032,6 +2176,13 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2032
2176
|
|
|
2033
2177
|
|
|
2034
2178
|
|
|
2179
|
+
|
|
2180
|
+
|
|
2181
|
+
|
|
2182
|
+
|
|
2183
|
+
|
|
2184
|
+
|
|
2185
|
+
|
|
2035
2186
|
|
|
2036
2187
|
|
|
2037
2188
|
|
|
@@ -2082,6 +2233,13 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2082
2233
|
|
|
2083
2234
|
|
|
2084
2235
|
|
|
2236
|
+
|
|
2237
|
+
|
|
2238
|
+
|
|
2239
|
+
|
|
2240
|
+
|
|
2241
|
+
|
|
2242
|
+
|
|
2085
2243
|
|
|
2086
2244
|
|
|
2087
2245
|
|
|
@@ -2099,6 +2257,14 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2099
2257
|
get first() {
|
|
2100
2258
|
return this.length > 0 ? this.elements[this._offset] : void 0;
|
|
2101
2259
|
}
|
|
2260
|
+
/**
|
|
2261
|
+
* Peek at the front element without removing it (alias for `first`).
|
|
2262
|
+
* @remarks Time O(1), Space O(1)
|
|
2263
|
+
* @returns Front element or undefined.
|
|
2264
|
+
*/
|
|
2265
|
+
peek() {
|
|
2266
|
+
return this.first;
|
|
2267
|
+
}
|
|
2102
2268
|
/**
|
|
2103
2269
|
* Get the last element (back) without removing it.
|
|
2104
2270
|
* @remarks Time O(1), Space O(1)
|
|
@@ -2148,6 +2314,13 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2148
2314
|
|
|
2149
2315
|
|
|
2150
2316
|
|
|
2317
|
+
|
|
2318
|
+
|
|
2319
|
+
|
|
2320
|
+
|
|
2321
|
+
|
|
2322
|
+
|
|
2323
|
+
|
|
2151
2324
|
|
|
2152
2325
|
|
|
2153
2326
|
|
|
@@ -2210,6 +2383,13 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2210
2383
|
|
|
2211
2384
|
|
|
2212
2385
|
|
|
2386
|
+
|
|
2387
|
+
|
|
2388
|
+
|
|
2389
|
+
|
|
2390
|
+
|
|
2391
|
+
|
|
2392
|
+
|
|
2213
2393
|
|
|
2214
2394
|
|
|
2215
2395
|
|
|
@@ -2279,6 +2459,13 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2279
2459
|
|
|
2280
2460
|
|
|
2281
2461
|
|
|
2462
|
+
|
|
2463
|
+
|
|
2464
|
+
|
|
2465
|
+
|
|
2466
|
+
|
|
2467
|
+
|
|
2468
|
+
|
|
2282
2469
|
|
|
2283
2470
|
|
|
2284
2471
|
|
|
@@ -2338,6 +2525,13 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2338
2525
|
|
|
2339
2526
|
|
|
2340
2527
|
|
|
2528
|
+
|
|
2529
|
+
|
|
2530
|
+
|
|
2531
|
+
|
|
2532
|
+
|
|
2533
|
+
|
|
2534
|
+
|
|
2341
2535
|
|
|
2342
2536
|
|
|
2343
2537
|
|
|
@@ -2390,6 +2584,13 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2390
2584
|
|
|
2391
2585
|
|
|
2392
2586
|
|
|
2587
|
+
|
|
2588
|
+
|
|
2589
|
+
|
|
2590
|
+
|
|
2591
|
+
|
|
2592
|
+
|
|
2593
|
+
|
|
2393
2594
|
|
|
2394
2595
|
|
|
2395
2596
|
|
|
@@ -2444,6 +2645,21 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2444
2645
|
this._elements[this._offset + index] = newElement;
|
|
2445
2646
|
return true;
|
|
2446
2647
|
}
|
|
2648
|
+
/**
|
|
2649
|
+
* Delete the first element that satisfies a predicate.
|
|
2650
|
+
* @remarks Time O(N), Space O(N)
|
|
2651
|
+
* @param predicate - Function (value, index, queue) → boolean to decide deletion.
|
|
2652
|
+
* @returns True if a match was removed.
|
|
2653
|
+
*/
|
|
2654
|
+
deleteWhere(predicate) {
|
|
2655
|
+
for (let i = 0; i < this.length; i++) {
|
|
2656
|
+
if (predicate(this._elements[this._offset + i], i, this)) {
|
|
2657
|
+
this.deleteAt(i);
|
|
2658
|
+
return true;
|
|
2659
|
+
}
|
|
2660
|
+
}
|
|
2661
|
+
return false;
|
|
2662
|
+
}
|
|
2447
2663
|
/**
|
|
2448
2664
|
* Reverse the queue in-place by compacting then reversing.
|
|
2449
2665
|
* @remarks Time O(N), Space O(N)
|
|
@@ -2483,6 +2699,13 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2483
2699
|
|
|
2484
2700
|
|
|
2485
2701
|
|
|
2702
|
+
|
|
2703
|
+
|
|
2704
|
+
|
|
2705
|
+
|
|
2706
|
+
|
|
2707
|
+
|
|
2708
|
+
|
|
2486
2709
|
|
|
2487
2710
|
|
|
2488
2711
|
|
|
@@ -2529,6 +2752,13 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2529
2752
|
|
|
2530
2753
|
|
|
2531
2754
|
|
|
2755
|
+
|
|
2756
|
+
|
|
2757
|
+
|
|
2758
|
+
|
|
2759
|
+
|
|
2760
|
+
|
|
2761
|
+
|
|
2532
2762
|
|
|
2533
2763
|
|
|
2534
2764
|
|
|
@@ -2598,6 +2828,13 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2598
2828
|
|
|
2599
2829
|
|
|
2600
2830
|
|
|
2831
|
+
|
|
2832
|
+
|
|
2833
|
+
|
|
2834
|
+
|
|
2835
|
+
|
|
2836
|
+
|
|
2837
|
+
|
|
2601
2838
|
|
|
2602
2839
|
|
|
2603
2840
|
|
|
@@ -2651,6 +2888,13 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2651
2888
|
|
|
2652
2889
|
|
|
2653
2890
|
|
|
2891
|
+
|
|
2892
|
+
|
|
2893
|
+
|
|
2894
|
+
|
|
2895
|
+
|
|
2896
|
+
|
|
2897
|
+
|
|
2654
2898
|
|
|
2655
2899
|
|
|
2656
2900
|
|
|
@@ -2708,6 +2952,13 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2708
2952
|
|
|
2709
2953
|
|
|
2710
2954
|
|
|
2955
|
+
|
|
2956
|
+
|
|
2957
|
+
|
|
2958
|
+
|
|
2959
|
+
|
|
2960
|
+
|
|
2961
|
+
|
|
2711
2962
|
|
|
2712
2963
|
|
|
2713
2964
|
|
|
@@ -2992,6 +3243,37 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
2992
3243
|
|
|
2993
3244
|
|
|
2994
3245
|
|
|
3246
|
+
|
|
3247
|
+
|
|
3248
|
+
|
|
3249
|
+
|
|
3250
|
+
|
|
3251
|
+
* @example
|
|
3252
|
+
* // Deque peek at both ends
|
|
3253
|
+
* const deque = new Deque<number>([10, 20, 30, 40, 50]);
|
|
3254
|
+
*
|
|
3255
|
+
* // Get first element without removing
|
|
3256
|
+
* const first = deque.at(0);
|
|
3257
|
+
* console.log(first); // 10;
|
|
3258
|
+
*
|
|
3259
|
+
* // Get last element without removing
|
|
3260
|
+
* const last = deque.at(deque.length - 1);
|
|
3261
|
+
* console.log(last); // 50;
|
|
3262
|
+
*
|
|
3263
|
+
* // Length unchanged
|
|
3264
|
+
* console.log(deque.length); // 5;
|
|
3265
|
+
*/
|
|
3266
|
+
/**
|
|
3267
|
+
* Peek at the front element without removing it (alias for `first`).
|
|
3268
|
+
* @remarks Time O(1), Space O(1)
|
|
3269
|
+
* @returns Front element or undefined.
|
|
3270
|
+
*/
|
|
3271
|
+
peek() {
|
|
3272
|
+
return this.first;
|
|
3273
|
+
}
|
|
3274
|
+
/**
|
|
3275
|
+
* Deque peek at both ends
|
|
3276
|
+
|
|
2995
3277
|
|
|
2996
3278
|
|
|
2997
3279
|
* @example
|
|
@@ -3044,6 +3326,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3044
3326
|
|
|
3045
3327
|
|
|
3046
3328
|
|
|
3329
|
+
|
|
3330
|
+
|
|
3331
|
+
|
|
3332
|
+
|
|
3333
|
+
|
|
3334
|
+
|
|
3335
|
+
|
|
3047
3336
|
|
|
3048
3337
|
|
|
3049
3338
|
|
|
@@ -3107,6 +3396,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3107
3396
|
|
|
3108
3397
|
|
|
3109
3398
|
|
|
3399
|
+
|
|
3400
|
+
|
|
3401
|
+
|
|
3402
|
+
|
|
3403
|
+
|
|
3404
|
+
|
|
3405
|
+
|
|
3110
3406
|
|
|
3111
3407
|
|
|
3112
3408
|
|
|
@@ -3183,6 +3479,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3183
3479
|
|
|
3184
3480
|
|
|
3185
3481
|
|
|
3482
|
+
|
|
3483
|
+
|
|
3484
|
+
|
|
3485
|
+
|
|
3486
|
+
|
|
3487
|
+
|
|
3488
|
+
|
|
3186
3489
|
|
|
3187
3490
|
|
|
3188
3491
|
|
|
@@ -3246,6 +3549,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3246
3549
|
|
|
3247
3550
|
|
|
3248
3551
|
|
|
3552
|
+
|
|
3553
|
+
|
|
3554
|
+
|
|
3555
|
+
|
|
3556
|
+
|
|
3557
|
+
|
|
3558
|
+
|
|
3249
3559
|
|
|
3250
3560
|
|
|
3251
3561
|
|
|
@@ -3310,6 +3620,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3310
3620
|
|
|
3311
3621
|
|
|
3312
3622
|
|
|
3623
|
+
|
|
3624
|
+
|
|
3625
|
+
|
|
3626
|
+
|
|
3627
|
+
|
|
3628
|
+
|
|
3629
|
+
|
|
3313
3630
|
|
|
3314
3631
|
|
|
3315
3632
|
|
|
@@ -3415,6 +3732,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3415
3732
|
|
|
3416
3733
|
|
|
3417
3734
|
|
|
3735
|
+
|
|
3736
|
+
|
|
3737
|
+
|
|
3738
|
+
|
|
3739
|
+
|
|
3740
|
+
|
|
3741
|
+
|
|
3418
3742
|
|
|
3419
3743
|
|
|
3420
3744
|
|
|
@@ -3460,6 +3784,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3460
3784
|
|
|
3461
3785
|
|
|
3462
3786
|
|
|
3787
|
+
|
|
3788
|
+
|
|
3789
|
+
|
|
3790
|
+
|
|
3791
|
+
|
|
3792
|
+
|
|
3793
|
+
|
|
3463
3794
|
|
|
3464
3795
|
|
|
3465
3796
|
|
|
@@ -3509,6 +3840,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3509
3840
|
|
|
3510
3841
|
|
|
3511
3842
|
|
|
3843
|
+
|
|
3844
|
+
|
|
3845
|
+
|
|
3846
|
+
|
|
3847
|
+
|
|
3848
|
+
|
|
3849
|
+
|
|
3512
3850
|
|
|
3513
3851
|
|
|
3514
3852
|
|
|
@@ -3709,6 +4047,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3709
4047
|
|
|
3710
4048
|
|
|
3711
4049
|
|
|
4050
|
+
|
|
4051
|
+
|
|
4052
|
+
|
|
4053
|
+
|
|
4054
|
+
|
|
4055
|
+
|
|
4056
|
+
|
|
3712
4057
|
|
|
3713
4058
|
|
|
3714
4059
|
|
|
@@ -3803,6 +4148,68 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3803
4148
|
|
|
3804
4149
|
|
|
3805
4150
|
|
|
4151
|
+
|
|
4152
|
+
|
|
4153
|
+
|
|
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
|
+
|
|
3806
4213
|
|
|
3807
4214
|
* @example
|
|
3808
4215
|
* // Deque for...of iteration and reverse
|
|
@@ -3908,6 +4315,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3908
4315
|
|
|
3909
4316
|
|
|
3910
4317
|
|
|
4318
|
+
|
|
4319
|
+
|
|
4320
|
+
|
|
4321
|
+
|
|
4322
|
+
|
|
4323
|
+
|
|
4324
|
+
|
|
3911
4325
|
|
|
3912
4326
|
|
|
3913
4327
|
|
|
@@ -3979,6 +4393,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3979
4393
|
|
|
3980
4394
|
|
|
3981
4395
|
|
|
4396
|
+
|
|
4397
|
+
|
|
4398
|
+
|
|
4399
|
+
|
|
4400
|
+
|
|
4401
|
+
|
|
4402
|
+
|
|
3982
4403
|
|
|
3983
4404
|
|
|
3984
4405
|
|
|
@@ -4033,6 +4454,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
4033
4454
|
|
|
4034
4455
|
|
|
4035
4456
|
|
|
4457
|
+
|
|
4458
|
+
|
|
4459
|
+
|
|
4460
|
+
|
|
4461
|
+
|
|
4462
|
+
|
|
4463
|
+
|
|
4036
4464
|
|
|
4037
4465
|
|
|
4038
4466
|
|
|
@@ -4107,6 +4535,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
4107
4535
|
|
|
4108
4536
|
|
|
4109
4537
|
|
|
4538
|
+
|
|
4539
|
+
|
|
4540
|
+
|
|
4541
|
+
|
|
4542
|
+
|
|
4543
|
+
|
|
4544
|
+
|
|
4110
4545
|
|
|
4111
4546
|
|
|
4112
4547
|
|