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
|
@@ -160,6 +160,35 @@ var _IterableElementBase = class _IterableElementBase {
|
|
|
160
160
|
for (const ele of this) if (ele === element) return true;
|
|
161
161
|
return false;
|
|
162
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* Check whether a value exists (Array-compatible alias for `has`).
|
|
165
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
|
|
166
|
+
* @param element - Element to search for (uses `===`).
|
|
167
|
+
* @returns `true` if found.
|
|
168
|
+
*/
|
|
169
|
+
includes(element) {
|
|
170
|
+
return this.has(element);
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Return an iterator of `[index, value]` pairs (Array-compatible).
|
|
174
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
|
|
175
|
+
*/
|
|
176
|
+
*entries() {
|
|
177
|
+
let index = 0;
|
|
178
|
+
for (const value of this) {
|
|
179
|
+
yield [index++, value];
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Return an iterator of numeric indices (Array-compatible).
|
|
184
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
|
|
185
|
+
*/
|
|
186
|
+
*keys() {
|
|
187
|
+
let index = 0;
|
|
188
|
+
for (const _ of this) {
|
|
189
|
+
yield index++;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
163
192
|
/**
|
|
164
193
|
* Reduces all elements to a single accumulated value.
|
|
165
194
|
*
|
|
@@ -468,6 +497,16 @@ var _LinearBase = class _LinearBase extends IterableElementBase {
|
|
|
468
497
|
}
|
|
469
498
|
return this;
|
|
470
499
|
}
|
|
500
|
+
/**
|
|
501
|
+
* Return a new instance of the same type with elements in reverse order (non-mutating).
|
|
502
|
+
* @remarks Provided for familiarity when migrating from Array (ES2023 `toReversed`). Time O(n), Space O(n).
|
|
503
|
+
* @returns A new reversed instance.
|
|
504
|
+
*/
|
|
505
|
+
toReversed() {
|
|
506
|
+
const cloned = this.clone();
|
|
507
|
+
cloned.reverse();
|
|
508
|
+
return cloned;
|
|
509
|
+
}
|
|
471
510
|
};
|
|
472
511
|
__name(_LinearBase, "LinearBase");
|
|
473
512
|
var LinearBase = _LinearBase;
|
|
@@ -758,6 +797,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
758
797
|
|
|
759
798
|
|
|
760
799
|
|
|
800
|
+
|
|
801
|
+
|
|
802
|
+
|
|
803
|
+
|
|
804
|
+
|
|
805
|
+
|
|
806
|
+
|
|
761
807
|
|
|
762
808
|
|
|
763
809
|
|
|
@@ -825,6 +871,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
825
871
|
|
|
826
872
|
|
|
827
873
|
|
|
874
|
+
|
|
875
|
+
|
|
876
|
+
|
|
877
|
+
|
|
878
|
+
|
|
879
|
+
|
|
880
|
+
|
|
828
881
|
|
|
829
882
|
|
|
830
883
|
|
|
@@ -898,6 +951,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
898
951
|
|
|
899
952
|
|
|
900
953
|
|
|
954
|
+
|
|
955
|
+
|
|
956
|
+
|
|
957
|
+
|
|
958
|
+
|
|
959
|
+
|
|
960
|
+
|
|
901
961
|
|
|
902
962
|
|
|
903
963
|
|
|
@@ -952,6 +1012,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
952
1012
|
|
|
953
1013
|
|
|
954
1014
|
|
|
1015
|
+
|
|
1016
|
+
|
|
1017
|
+
|
|
1018
|
+
|
|
1019
|
+
|
|
1020
|
+
|
|
1021
|
+
|
|
955
1022
|
|
|
956
1023
|
|
|
957
1024
|
|
|
@@ -1067,6 +1134,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1067
1134
|
|
|
1068
1135
|
|
|
1069
1136
|
|
|
1137
|
+
|
|
1138
|
+
|
|
1139
|
+
|
|
1140
|
+
|
|
1141
|
+
|
|
1142
|
+
|
|
1143
|
+
|
|
1070
1144
|
|
|
1071
1145
|
|
|
1072
1146
|
|
|
@@ -1126,6 +1200,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1126
1200
|
|
|
1127
1201
|
|
|
1128
1202
|
|
|
1203
|
+
|
|
1204
|
+
|
|
1205
|
+
|
|
1206
|
+
|
|
1207
|
+
|
|
1208
|
+
|
|
1209
|
+
|
|
1129
1210
|
|
|
1130
1211
|
|
|
1131
1212
|
|
|
@@ -1174,6 +1255,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1174
1255
|
|
|
1175
1256
|
|
|
1176
1257
|
|
|
1258
|
+
|
|
1259
|
+
|
|
1260
|
+
|
|
1261
|
+
|
|
1262
|
+
|
|
1263
|
+
|
|
1264
|
+
|
|
1177
1265
|
|
|
1178
1266
|
|
|
1179
1267
|
|
|
@@ -1228,6 +1316,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1228
1316
|
|
|
1229
1317
|
|
|
1230
1318
|
|
|
1319
|
+
|
|
1320
|
+
|
|
1321
|
+
|
|
1322
|
+
|
|
1323
|
+
|
|
1324
|
+
|
|
1325
|
+
|
|
1231
1326
|
|
|
1232
1327
|
|
|
1233
1328
|
|
|
@@ -1287,6 +1382,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1287
1382
|
|
|
1288
1383
|
|
|
1289
1384
|
|
|
1385
|
+
|
|
1386
|
+
|
|
1387
|
+
|
|
1388
|
+
|
|
1389
|
+
|
|
1390
|
+
|
|
1391
|
+
|
|
1290
1392
|
|
|
1291
1393
|
|
|
1292
1394
|
|
|
@@ -1354,6 +1456,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1354
1456
|
|
|
1355
1457
|
|
|
1356
1458
|
|
|
1459
|
+
|
|
1460
|
+
|
|
1461
|
+
|
|
1462
|
+
|
|
1463
|
+
|
|
1464
|
+
|
|
1465
|
+
|
|
1357
1466
|
|
|
1358
1467
|
|
|
1359
1468
|
|
|
@@ -1398,6 +1507,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1398
1507
|
|
|
1399
1508
|
|
|
1400
1509
|
|
|
1510
|
+
|
|
1511
|
+
|
|
1512
|
+
|
|
1513
|
+
|
|
1514
|
+
|
|
1515
|
+
|
|
1516
|
+
|
|
1401
1517
|
|
|
1402
1518
|
|
|
1403
1519
|
|
|
@@ -1448,6 +1564,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1448
1564
|
|
|
1449
1565
|
|
|
1450
1566
|
|
|
1567
|
+
|
|
1568
|
+
|
|
1569
|
+
|
|
1570
|
+
|
|
1571
|
+
|
|
1572
|
+
|
|
1573
|
+
|
|
1451
1574
|
|
|
1452
1575
|
|
|
1453
1576
|
|
|
@@ -1664,6 +1787,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1664
1787
|
|
|
1665
1788
|
|
|
1666
1789
|
|
|
1790
|
+
|
|
1791
|
+
|
|
1792
|
+
|
|
1793
|
+
|
|
1794
|
+
|
|
1795
|
+
|
|
1796
|
+
|
|
1667
1797
|
|
|
1668
1798
|
|
|
1669
1799
|
|
|
@@ -1718,6 +1848,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1718
1848
|
|
|
1719
1849
|
|
|
1720
1850
|
|
|
1851
|
+
|
|
1852
|
+
|
|
1853
|
+
|
|
1854
|
+
|
|
1855
|
+
|
|
1856
|
+
|
|
1857
|
+
|
|
1721
1858
|
|
|
1722
1859
|
|
|
1723
1860
|
|
|
@@ -1800,6 +1937,13 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1800
1937
|
|
|
1801
1938
|
|
|
1802
1939
|
|
|
1940
|
+
|
|
1941
|
+
|
|
1942
|
+
|
|
1943
|
+
|
|
1944
|
+
|
|
1945
|
+
|
|
1946
|
+
|
|
1803
1947
|
|
|
1804
1948
|
|
|
1805
1949
|
|
|
@@ -2034,6 +2178,13 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2034
2178
|
|
|
2035
2179
|
|
|
2036
2180
|
|
|
2181
|
+
|
|
2182
|
+
|
|
2183
|
+
|
|
2184
|
+
|
|
2185
|
+
|
|
2186
|
+
|
|
2187
|
+
|
|
2037
2188
|
|
|
2038
2189
|
|
|
2039
2190
|
|
|
@@ -2084,6 +2235,13 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2084
2235
|
|
|
2085
2236
|
|
|
2086
2237
|
|
|
2238
|
+
|
|
2239
|
+
|
|
2240
|
+
|
|
2241
|
+
|
|
2242
|
+
|
|
2243
|
+
|
|
2244
|
+
|
|
2087
2245
|
|
|
2088
2246
|
|
|
2089
2247
|
|
|
@@ -2101,6 +2259,14 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2101
2259
|
get first() {
|
|
2102
2260
|
return this.length > 0 ? this.elements[this._offset] : void 0;
|
|
2103
2261
|
}
|
|
2262
|
+
/**
|
|
2263
|
+
* Peek at the front element without removing it (alias for `first`).
|
|
2264
|
+
* @remarks Time O(1), Space O(1)
|
|
2265
|
+
* @returns Front element or undefined.
|
|
2266
|
+
*/
|
|
2267
|
+
peek() {
|
|
2268
|
+
return this.first;
|
|
2269
|
+
}
|
|
2104
2270
|
/**
|
|
2105
2271
|
* Get the last element (back) without removing it.
|
|
2106
2272
|
* @remarks Time O(1), Space O(1)
|
|
@@ -2150,6 +2316,13 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2150
2316
|
|
|
2151
2317
|
|
|
2152
2318
|
|
|
2319
|
+
|
|
2320
|
+
|
|
2321
|
+
|
|
2322
|
+
|
|
2323
|
+
|
|
2324
|
+
|
|
2325
|
+
|
|
2153
2326
|
|
|
2154
2327
|
|
|
2155
2328
|
|
|
@@ -2212,6 +2385,13 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2212
2385
|
|
|
2213
2386
|
|
|
2214
2387
|
|
|
2388
|
+
|
|
2389
|
+
|
|
2390
|
+
|
|
2391
|
+
|
|
2392
|
+
|
|
2393
|
+
|
|
2394
|
+
|
|
2215
2395
|
|
|
2216
2396
|
|
|
2217
2397
|
|
|
@@ -2281,6 +2461,13 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2281
2461
|
|
|
2282
2462
|
|
|
2283
2463
|
|
|
2464
|
+
|
|
2465
|
+
|
|
2466
|
+
|
|
2467
|
+
|
|
2468
|
+
|
|
2469
|
+
|
|
2470
|
+
|
|
2284
2471
|
|
|
2285
2472
|
|
|
2286
2473
|
|
|
@@ -2340,6 +2527,13 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2340
2527
|
|
|
2341
2528
|
|
|
2342
2529
|
|
|
2530
|
+
|
|
2531
|
+
|
|
2532
|
+
|
|
2533
|
+
|
|
2534
|
+
|
|
2535
|
+
|
|
2536
|
+
|
|
2343
2537
|
|
|
2344
2538
|
|
|
2345
2539
|
|
|
@@ -2392,6 +2586,13 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2392
2586
|
|
|
2393
2587
|
|
|
2394
2588
|
|
|
2589
|
+
|
|
2590
|
+
|
|
2591
|
+
|
|
2592
|
+
|
|
2593
|
+
|
|
2594
|
+
|
|
2595
|
+
|
|
2395
2596
|
|
|
2396
2597
|
|
|
2397
2598
|
|
|
@@ -2446,6 +2647,21 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2446
2647
|
this._elements[this._offset + index] = newElement;
|
|
2447
2648
|
return true;
|
|
2448
2649
|
}
|
|
2650
|
+
/**
|
|
2651
|
+
* Delete the first element that satisfies a predicate.
|
|
2652
|
+
* @remarks Time O(N), Space O(N)
|
|
2653
|
+
* @param predicate - Function (value, index, queue) → boolean to decide deletion.
|
|
2654
|
+
* @returns True if a match was removed.
|
|
2655
|
+
*/
|
|
2656
|
+
deleteWhere(predicate) {
|
|
2657
|
+
for (let i = 0; i < this.length; i++) {
|
|
2658
|
+
if (predicate(this._elements[this._offset + i], i, this)) {
|
|
2659
|
+
this.deleteAt(i);
|
|
2660
|
+
return true;
|
|
2661
|
+
}
|
|
2662
|
+
}
|
|
2663
|
+
return false;
|
|
2664
|
+
}
|
|
2449
2665
|
/**
|
|
2450
2666
|
* Reverse the queue in-place by compacting then reversing.
|
|
2451
2667
|
* @remarks Time O(N), Space O(N)
|
|
@@ -2485,6 +2701,13 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2485
2701
|
|
|
2486
2702
|
|
|
2487
2703
|
|
|
2704
|
+
|
|
2705
|
+
|
|
2706
|
+
|
|
2707
|
+
|
|
2708
|
+
|
|
2709
|
+
|
|
2710
|
+
|
|
2488
2711
|
|
|
2489
2712
|
|
|
2490
2713
|
|
|
@@ -2531,6 +2754,13 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2531
2754
|
|
|
2532
2755
|
|
|
2533
2756
|
|
|
2757
|
+
|
|
2758
|
+
|
|
2759
|
+
|
|
2760
|
+
|
|
2761
|
+
|
|
2762
|
+
|
|
2763
|
+
|
|
2534
2764
|
|
|
2535
2765
|
|
|
2536
2766
|
|
|
@@ -2600,6 +2830,13 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2600
2830
|
|
|
2601
2831
|
|
|
2602
2832
|
|
|
2833
|
+
|
|
2834
|
+
|
|
2835
|
+
|
|
2836
|
+
|
|
2837
|
+
|
|
2838
|
+
|
|
2839
|
+
|
|
2603
2840
|
|
|
2604
2841
|
|
|
2605
2842
|
|
|
@@ -2653,6 +2890,13 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2653
2890
|
|
|
2654
2891
|
|
|
2655
2892
|
|
|
2893
|
+
|
|
2894
|
+
|
|
2895
|
+
|
|
2896
|
+
|
|
2897
|
+
|
|
2898
|
+
|
|
2899
|
+
|
|
2656
2900
|
|
|
2657
2901
|
|
|
2658
2902
|
|
|
@@ -2710,6 +2954,13 @@ var _Queue = class _Queue extends LinearBase {
|
|
|
2710
2954
|
|
|
2711
2955
|
|
|
2712
2956
|
|
|
2957
|
+
|
|
2958
|
+
|
|
2959
|
+
|
|
2960
|
+
|
|
2961
|
+
|
|
2962
|
+
|
|
2963
|
+
|
|
2713
2964
|
|
|
2714
2965
|
|
|
2715
2966
|
|
|
@@ -2994,6 +3245,37 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
2994
3245
|
|
|
2995
3246
|
|
|
2996
3247
|
|
|
3248
|
+
|
|
3249
|
+
|
|
3250
|
+
|
|
3251
|
+
|
|
3252
|
+
|
|
3253
|
+
* @example
|
|
3254
|
+
* // Deque peek at both ends
|
|
3255
|
+
* const deque = new Deque<number>([10, 20, 30, 40, 50]);
|
|
3256
|
+
*
|
|
3257
|
+
* // Get first element without removing
|
|
3258
|
+
* const first = deque.at(0);
|
|
3259
|
+
* console.log(first); // 10;
|
|
3260
|
+
*
|
|
3261
|
+
* // Get last element without removing
|
|
3262
|
+
* const last = deque.at(deque.length - 1);
|
|
3263
|
+
* console.log(last); // 50;
|
|
3264
|
+
*
|
|
3265
|
+
* // Length unchanged
|
|
3266
|
+
* console.log(deque.length); // 5;
|
|
3267
|
+
*/
|
|
3268
|
+
/**
|
|
3269
|
+
* Peek at the front element without removing it (alias for `first`).
|
|
3270
|
+
* @remarks Time O(1), Space O(1)
|
|
3271
|
+
* @returns Front element or undefined.
|
|
3272
|
+
*/
|
|
3273
|
+
peek() {
|
|
3274
|
+
return this.first;
|
|
3275
|
+
}
|
|
3276
|
+
/**
|
|
3277
|
+
* Deque peek at both ends
|
|
3278
|
+
|
|
2997
3279
|
|
|
2998
3280
|
|
|
2999
3281
|
* @example
|
|
@@ -3046,6 +3328,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3046
3328
|
|
|
3047
3329
|
|
|
3048
3330
|
|
|
3331
|
+
|
|
3332
|
+
|
|
3333
|
+
|
|
3334
|
+
|
|
3335
|
+
|
|
3336
|
+
|
|
3337
|
+
|
|
3049
3338
|
|
|
3050
3339
|
|
|
3051
3340
|
|
|
@@ -3109,6 +3398,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3109
3398
|
|
|
3110
3399
|
|
|
3111
3400
|
|
|
3401
|
+
|
|
3402
|
+
|
|
3403
|
+
|
|
3404
|
+
|
|
3405
|
+
|
|
3406
|
+
|
|
3407
|
+
|
|
3112
3408
|
|
|
3113
3409
|
|
|
3114
3410
|
|
|
@@ -3185,6 +3481,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3185
3481
|
|
|
3186
3482
|
|
|
3187
3483
|
|
|
3484
|
+
|
|
3485
|
+
|
|
3486
|
+
|
|
3487
|
+
|
|
3488
|
+
|
|
3489
|
+
|
|
3490
|
+
|
|
3188
3491
|
|
|
3189
3492
|
|
|
3190
3493
|
|
|
@@ -3248,6 +3551,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3248
3551
|
|
|
3249
3552
|
|
|
3250
3553
|
|
|
3554
|
+
|
|
3555
|
+
|
|
3556
|
+
|
|
3557
|
+
|
|
3558
|
+
|
|
3559
|
+
|
|
3560
|
+
|
|
3251
3561
|
|
|
3252
3562
|
|
|
3253
3563
|
|
|
@@ -3312,6 +3622,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3312
3622
|
|
|
3313
3623
|
|
|
3314
3624
|
|
|
3625
|
+
|
|
3626
|
+
|
|
3627
|
+
|
|
3628
|
+
|
|
3629
|
+
|
|
3630
|
+
|
|
3631
|
+
|
|
3315
3632
|
|
|
3316
3633
|
|
|
3317
3634
|
|
|
@@ -3417,6 +3734,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3417
3734
|
|
|
3418
3735
|
|
|
3419
3736
|
|
|
3737
|
+
|
|
3738
|
+
|
|
3739
|
+
|
|
3740
|
+
|
|
3741
|
+
|
|
3742
|
+
|
|
3743
|
+
|
|
3420
3744
|
|
|
3421
3745
|
|
|
3422
3746
|
|
|
@@ -3462,6 +3786,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3462
3786
|
|
|
3463
3787
|
|
|
3464
3788
|
|
|
3789
|
+
|
|
3790
|
+
|
|
3791
|
+
|
|
3792
|
+
|
|
3793
|
+
|
|
3794
|
+
|
|
3795
|
+
|
|
3465
3796
|
|
|
3466
3797
|
|
|
3467
3798
|
|
|
@@ -3511,6 +3842,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3511
3842
|
|
|
3512
3843
|
|
|
3513
3844
|
|
|
3845
|
+
|
|
3846
|
+
|
|
3847
|
+
|
|
3848
|
+
|
|
3849
|
+
|
|
3850
|
+
|
|
3851
|
+
|
|
3514
3852
|
|
|
3515
3853
|
|
|
3516
3854
|
|
|
@@ -3711,6 +4049,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3711
4049
|
|
|
3712
4050
|
|
|
3713
4051
|
|
|
4052
|
+
|
|
4053
|
+
|
|
4054
|
+
|
|
4055
|
+
|
|
4056
|
+
|
|
4057
|
+
|
|
4058
|
+
|
|
3714
4059
|
|
|
3715
4060
|
|
|
3716
4061
|
|
|
@@ -3805,6 +4150,68 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3805
4150
|
|
|
3806
4151
|
|
|
3807
4152
|
|
|
4153
|
+
|
|
4154
|
+
|
|
4155
|
+
|
|
4156
|
+
|
|
4157
|
+
|
|
4158
|
+
* @example
|
|
4159
|
+
* // Deque for...of iteration and reverse
|
|
4160
|
+
* const deque = new Deque<string>(['A', 'B', 'C', 'D']);
|
|
4161
|
+
*
|
|
4162
|
+
* // Iterate forward
|
|
4163
|
+
* const forward: string[] = [];
|
|
4164
|
+
* for (const item of deque) {
|
|
4165
|
+
* forward.push(item);
|
|
4166
|
+
* }
|
|
4167
|
+
* console.log(forward); // ['A', 'B', 'C', 'D'];
|
|
4168
|
+
*
|
|
4169
|
+
* // Reverse the deque
|
|
4170
|
+
* deque.reverse();
|
|
4171
|
+
* const backward: string[] = [];
|
|
4172
|
+
* for (const item of deque) {
|
|
4173
|
+
* backward.push(item);
|
|
4174
|
+
* }
|
|
4175
|
+
* console.log(backward); // ['D', 'C', 'B', 'A'];
|
|
4176
|
+
*/
|
|
4177
|
+
/**
|
|
4178
|
+
* Find the last value matching a predicate (scans back-to-front).
|
|
4179
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
|
|
4180
|
+
* @param predicate - Function called with (value, index, deque).
|
|
4181
|
+
* @returns Matching value or undefined.
|
|
4182
|
+
* @example
|
|
4183
|
+
* // Find last matching value
|
|
4184
|
+
* const d = new Deque([1, 2, 3, 4, 5]);
|
|
4185
|
+
* console.log(d.findLast(v => v > 2)); // 5;
|
|
4186
|
+
* console.log(d.findLast(v => v % 2 === 0)); // 4;
|
|
4187
|
+
*/
|
|
4188
|
+
findLast(predicate) {
|
|
4189
|
+
for (let i = this.length - 1; i >= 0; i--) {
|
|
4190
|
+
const val = this.at(i);
|
|
4191
|
+
if (predicate(val, i, this)) return val;
|
|
4192
|
+
}
|
|
4193
|
+
return void 0;
|
|
4194
|
+
}
|
|
4195
|
+
/**
|
|
4196
|
+
* Find the index of the last value matching a predicate (scans back-to-front).
|
|
4197
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
|
|
4198
|
+
* @param predicate - Function called with (value, index, deque).
|
|
4199
|
+
* @returns Matching index, or -1 if not found.
|
|
4200
|
+
* @example
|
|
4201
|
+
* // Find last matching index
|
|
4202
|
+
* const d = new Deque([10, 20, 30, 20, 10]);
|
|
4203
|
+
* console.log(d.findLastIndex(v => v === 20)); // 3;
|
|
4204
|
+
* console.log(d.findLastIndex(v => v === 10)); // 4;
|
|
4205
|
+
*/
|
|
4206
|
+
findLastIndex(predicate) {
|
|
4207
|
+
for (let i = this.length - 1; i >= 0; i--) {
|
|
4208
|
+
if (predicate(this.at(i), i, this)) return i;
|
|
4209
|
+
}
|
|
4210
|
+
return -1;
|
|
4211
|
+
}
|
|
4212
|
+
/**
|
|
4213
|
+
* Deque for...of iteration and reverse
|
|
4214
|
+
|
|
3808
4215
|
|
|
3809
4216
|
* @example
|
|
3810
4217
|
* // Deque for...of iteration and reverse
|
|
@@ -3910,6 +4317,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3910
4317
|
|
|
3911
4318
|
|
|
3912
4319
|
|
|
4320
|
+
|
|
4321
|
+
|
|
4322
|
+
|
|
4323
|
+
|
|
4324
|
+
|
|
4325
|
+
|
|
4326
|
+
|
|
3913
4327
|
|
|
3914
4328
|
|
|
3915
4329
|
|
|
@@ -3981,6 +4395,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
3981
4395
|
|
|
3982
4396
|
|
|
3983
4397
|
|
|
4398
|
+
|
|
4399
|
+
|
|
4400
|
+
|
|
4401
|
+
|
|
4402
|
+
|
|
4403
|
+
|
|
4404
|
+
|
|
3984
4405
|
|
|
3985
4406
|
|
|
3986
4407
|
|
|
@@ -4035,6 +4456,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
4035
4456
|
|
|
4036
4457
|
|
|
4037
4458
|
|
|
4459
|
+
|
|
4460
|
+
|
|
4461
|
+
|
|
4462
|
+
|
|
4463
|
+
|
|
4464
|
+
|
|
4465
|
+
|
|
4038
4466
|
|
|
4039
4467
|
|
|
4040
4468
|
|
|
@@ -4109,6 +4537,13 @@ var _Deque = class _Deque extends LinearBase {
|
|
|
4109
4537
|
|
|
4110
4538
|
|
|
4111
4539
|
|
|
4540
|
+
|
|
4541
|
+
|
|
4542
|
+
|
|
4543
|
+
|
|
4544
|
+
|
|
4545
|
+
|
|
4546
|
+
|
|
4112
4547
|
|
|
4113
4548
|
|
|
4114
4549
|
|