data-structure-typed 2.5.3 → 2.6.1
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/.github/workflows/ci.yml +7 -2
- package/.github/workflows/release-package.yml +9 -2
- 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/AVLTree.md +108 -108
- package/docs-site-docusaurus/docs/api/classes/BST.md +101 -101
- package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +13 -13
- package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +66 -66
- package/docs-site-docusaurus/docs/api/classes/Deque.md +235 -51
- package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +21 -21
- package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +231 -67
- package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +9 -9
- package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +1 -1
- package/docs-site-docusaurus/docs/api/classes/HashMap.md +14 -14
- package/docs-site-docusaurus/docs/api/classes/Heap.md +117 -34
- package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +83 -13
- package/docs-site-docusaurus/docs/api/classes/LinearBase.md +124 -20
- package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +140 -32
- package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +30 -26
- package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +159 -51
- package/docs-site-docusaurus/docs/api/classes/MapGraph.md +20 -20
- package/docs-site-docusaurus/docs/api/classes/Matrix.md +23 -23
- package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +117 -34
- package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +117 -34
- package/docs-site-docusaurus/docs/api/classes/MinHeap.md +117 -34
- package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +117 -34
- package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +117 -34
- package/docs-site-docusaurus/docs/api/classes/Queue.md +142 -34
- package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +117 -117
- package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +8 -8
- package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +158 -50
- package/docs-site-docusaurus/docs/api/classes/SkipList.md +21 -21
- package/docs-site-docusaurus/docs/api/classes/Stack.md +108 -26
- package/docs-site-docusaurus/docs/api/classes/TreeMap.md +33 -33
- package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +75 -39
- package/docs-site-docusaurus/docs/api/classes/TreeSet.md +301 -39
- package/docs-site-docusaurus/docs/api/classes/Trie.md +110 -28
- package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +20 -20
- package/jest.integration.config.js +1 -2
- package/package.json +51 -50
- package/src/common/error.ts +15 -32
- package/src/common/index.ts +0 -3
- package/src/data-structures/base/iterable-element-base.ts +32 -3
- package/src/data-structures/base/linear-base.ts +13 -36
- package/src/data-structures/binary-tree/avl-tree.ts +31 -493
- package/src/data-structures/binary-tree/binary-indexed-tree.ts +47 -530
- package/src/data-structures/binary-tree/binary-tree.ts +326 -1236
- package/src/data-structures/binary-tree/bst.ts +158 -1010
- package/src/data-structures/binary-tree/red-black-tree.ts +451 -1233
- package/src/data-structures/binary-tree/segment-tree.ts +73 -333
- package/src/data-structures/binary-tree/tree-map.ts +462 -4749
- package/src/data-structures/binary-tree/tree-multi-map.ts +310 -4530
- package/src/data-structures/binary-tree/tree-multi-set.ts +300 -3652
- package/src/data-structures/binary-tree/tree-set.ts +437 -4443
- package/src/data-structures/graph/abstract-graph.ts +98 -167
- package/src/data-structures/graph/directed-graph.ts +137 -532
- package/src/data-structures/graph/map-graph.ts +0 -3
- package/src/data-structures/graph/undirected-graph.ts +132 -484
- package/src/data-structures/hash/hash-map.ts +154 -549
- package/src/data-structures/heap/heap.ts +200 -753
- package/src/data-structures/linked-list/doubly-linked-list.ts +153 -809
- package/src/data-structures/linked-list/singly-linked-list.ts +122 -749
- package/src/data-structures/linked-list/skip-linked-list.ts +211 -864
- package/src/data-structures/matrix/matrix.ts +179 -494
- package/src/data-structures/matrix/navigator.ts +0 -1
- package/src/data-structures/priority-queue/max-priority-queue.ts +1 -6
- package/src/data-structures/priority-queue/min-priority-queue.ts +6 -11
- package/src/data-structures/priority-queue/priority-queue.ts +1 -2
- package/src/data-structures/queue/deque.ts +241 -807
- package/src/data-structures/queue/queue.ts +102 -589
- package/src/data-structures/stack/stack.ts +76 -475
- package/src/data-structures/trie/trie.ts +98 -592
- package/src/types/common.ts +0 -10
- package/src/types/data-structures/binary-tree/bst.ts +0 -7
- package/src/types/data-structures/binary-tree/red-black-tree.ts +0 -1
- package/src/types/data-structures/graph/abstract-graph.ts +0 -2
- package/src/types/data-structures/hash/hash-map.ts +0 -3
- package/src/types/data-structures/hash/index.ts +0 -1
- package/src/types/data-structures/matrix/navigator.ts +0 -2
- package/src/types/utils/utils.ts +0 -7
- package/src/types/utils/validate-type.ts +0 -7
- package/src/utils/number.ts +0 -2
- package/src/utils/utils.ts +0 -5
package/dist/cjs/linked-list.cjs
CHANGED
|
@@ -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
|
*
|
|
@@ -496,6 +525,16 @@ var LinearBase = class _LinearBase extends IterableElementBase {
|
|
|
496
525
|
}
|
|
497
526
|
return this;
|
|
498
527
|
}
|
|
528
|
+
/**
|
|
529
|
+
* Return a new instance of the same type with elements in reverse order (non-mutating).
|
|
530
|
+
* @remarks Provided for familiarity when migrating from Array (ES2023 `toReversed`). Time O(n), Space O(n).
|
|
531
|
+
* @returns A new reversed instance.
|
|
532
|
+
*/
|
|
533
|
+
toReversed() {
|
|
534
|
+
const cloned = this.clone();
|
|
535
|
+
cloned.reverse();
|
|
536
|
+
return cloned;
|
|
537
|
+
}
|
|
499
538
|
};
|
|
500
539
|
var LinearLinkedBase = class extends LinearBase {
|
|
501
540
|
static {
|
|
@@ -795,6 +834,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
795
834
|
|
|
796
835
|
|
|
797
836
|
|
|
837
|
+
|
|
838
|
+
|
|
839
|
+
|
|
798
840
|
|
|
799
841
|
|
|
800
842
|
|
|
@@ -866,6 +908,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
866
908
|
|
|
867
909
|
|
|
868
910
|
|
|
911
|
+
|
|
912
|
+
|
|
913
|
+
|
|
869
914
|
|
|
870
915
|
|
|
871
916
|
|
|
@@ -942,6 +987,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
942
987
|
|
|
943
988
|
|
|
944
989
|
|
|
990
|
+
|
|
991
|
+
|
|
992
|
+
|
|
945
993
|
|
|
946
994
|
|
|
947
995
|
|
|
@@ -1000,6 +1048,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1000
1048
|
|
|
1001
1049
|
|
|
1002
1050
|
|
|
1051
|
+
|
|
1052
|
+
|
|
1053
|
+
|
|
1003
1054
|
|
|
1004
1055
|
|
|
1005
1056
|
|
|
@@ -1119,6 +1170,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1119
1170
|
|
|
1120
1171
|
|
|
1121
1172
|
|
|
1173
|
+
|
|
1174
|
+
|
|
1175
|
+
|
|
1122
1176
|
|
|
1123
1177
|
|
|
1124
1178
|
|
|
@@ -1182,6 +1236,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1182
1236
|
|
|
1183
1237
|
|
|
1184
1238
|
|
|
1239
|
+
|
|
1240
|
+
|
|
1241
|
+
|
|
1185
1242
|
|
|
1186
1243
|
|
|
1187
1244
|
|
|
@@ -1234,6 +1291,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1234
1291
|
|
|
1235
1292
|
|
|
1236
1293
|
|
|
1294
|
+
|
|
1295
|
+
|
|
1296
|
+
|
|
1237
1297
|
|
|
1238
1298
|
|
|
1239
1299
|
|
|
@@ -1292,6 +1352,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1292
1352
|
|
|
1293
1353
|
|
|
1294
1354
|
|
|
1355
|
+
|
|
1356
|
+
|
|
1357
|
+
|
|
1295
1358
|
|
|
1296
1359
|
|
|
1297
1360
|
|
|
@@ -1355,6 +1418,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1355
1418
|
|
|
1356
1419
|
|
|
1357
1420
|
|
|
1421
|
+
|
|
1422
|
+
|
|
1423
|
+
|
|
1358
1424
|
|
|
1359
1425
|
|
|
1360
1426
|
|
|
@@ -1426,6 +1492,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1426
1492
|
|
|
1427
1493
|
|
|
1428
1494
|
|
|
1495
|
+
|
|
1496
|
+
|
|
1497
|
+
|
|
1429
1498
|
|
|
1430
1499
|
|
|
1431
1500
|
|
|
@@ -1474,6 +1543,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1474
1543
|
|
|
1475
1544
|
|
|
1476
1545
|
|
|
1546
|
+
|
|
1547
|
+
|
|
1548
|
+
|
|
1477
1549
|
|
|
1478
1550
|
|
|
1479
1551
|
|
|
@@ -1528,6 +1600,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1528
1600
|
|
|
1529
1601
|
|
|
1530
1602
|
|
|
1603
|
+
|
|
1604
|
+
|
|
1605
|
+
|
|
1531
1606
|
|
|
1532
1607
|
|
|
1533
1608
|
|
|
@@ -1748,6 +1823,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1748
1823
|
|
|
1749
1824
|
|
|
1750
1825
|
|
|
1826
|
+
|
|
1827
|
+
|
|
1828
|
+
|
|
1751
1829
|
|
|
1752
1830
|
|
|
1753
1831
|
|
|
@@ -1806,6 +1884,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1806
1884
|
|
|
1807
1885
|
|
|
1808
1886
|
|
|
1887
|
+
|
|
1888
|
+
|
|
1889
|
+
|
|
1809
1890
|
|
|
1810
1891
|
|
|
1811
1892
|
|
|
@@ -1892,6 +1973,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1892
1973
|
|
|
1893
1974
|
|
|
1894
1975
|
|
|
1976
|
+
|
|
1977
|
+
|
|
1978
|
+
|
|
1895
1979
|
|
|
1896
1980
|
|
|
1897
1981
|
|
|
@@ -2216,6 +2300,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
2216
2300
|
|
|
2217
2301
|
|
|
2218
2302
|
|
|
2303
|
+
|
|
2304
|
+
|
|
2305
|
+
|
|
2219
2306
|
|
|
2220
2307
|
|
|
2221
2308
|
|
|
@@ -2289,6 +2376,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
2289
2376
|
|
|
2290
2377
|
|
|
2291
2378
|
|
|
2379
|
+
|
|
2380
|
+
|
|
2381
|
+
|
|
2292
2382
|
|
|
2293
2383
|
|
|
2294
2384
|
|
|
@@ -2361,6 +2451,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
2361
2451
|
|
|
2362
2452
|
|
|
2363
2453
|
|
|
2454
|
+
|
|
2455
|
+
|
|
2456
|
+
|
|
2364
2457
|
|
|
2365
2458
|
|
|
2366
2459
|
|
|
@@ -2424,6 +2517,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
2424
2517
|
|
|
2425
2518
|
|
|
2426
2519
|
|
|
2520
|
+
|
|
2521
|
+
|
|
2522
|
+
|
|
2427
2523
|
|
|
2428
2524
|
|
|
2429
2525
|
|
|
@@ -2516,6 +2612,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
2516
2612
|
|
|
2517
2613
|
|
|
2518
2614
|
|
|
2615
|
+
|
|
2616
|
+
|
|
2617
|
+
|
|
2519
2618
|
|
|
2520
2619
|
|
|
2521
2620
|
|
|
@@ -2569,6 +2668,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
2569
2668
|
|
|
2570
2669
|
|
|
2571
2670
|
|
|
2671
|
+
|
|
2672
|
+
|
|
2673
|
+
|
|
2572
2674
|
|
|
2573
2675
|
|
|
2574
2676
|
|
|
@@ -2653,6 +2755,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
2653
2755
|
|
|
2654
2756
|
|
|
2655
2757
|
|
|
2758
|
+
|
|
2759
|
+
|
|
2760
|
+
|
|
2656
2761
|
|
|
2657
2762
|
|
|
2658
2763
|
|
|
@@ -2765,6 +2870,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
2765
2870
|
|
|
2766
2871
|
|
|
2767
2872
|
|
|
2873
|
+
|
|
2874
|
+
|
|
2875
|
+
|
|
2768
2876
|
|
|
2769
2877
|
|
|
2770
2878
|
|
|
@@ -2824,6 +2932,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
2824
2932
|
|
|
2825
2933
|
|
|
2826
2934
|
|
|
2935
|
+
|
|
2936
|
+
|
|
2937
|
+
|
|
2827
2938
|
|
|
2828
2939
|
|
|
2829
2940
|
|
|
@@ -2885,6 +2996,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
2885
2996
|
|
|
2886
2997
|
|
|
2887
2998
|
|
|
2999
|
+
|
|
3000
|
+
|
|
3001
|
+
|
|
2888
3002
|
|
|
2889
3003
|
|
|
2890
3004
|
|
|
@@ -2933,6 +3047,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
2933
3047
|
|
|
2934
3048
|
|
|
2935
3049
|
|
|
3050
|
+
|
|
3051
|
+
|
|
3052
|
+
|
|
2936
3053
|
|
|
2937
3054
|
|
|
2938
3055
|
|
|
@@ -2985,6 +3102,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
2985
3102
|
|
|
2986
3103
|
|
|
2987
3104
|
|
|
3105
|
+
|
|
3106
|
+
|
|
3107
|
+
|
|
2988
3108
|
|
|
2989
3109
|
|
|
2990
3110
|
|
|
@@ -3048,11 +3168,31 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
3048
3168
|
* @example
|
|
3049
3169
|
* // Find value scanning from tail
|
|
3050
3170
|
* const list = new DoublyLinkedList<number>([1, 2, 3, 4]);
|
|
3051
|
-
* //
|
|
3052
|
-
* const found = list.
|
|
3171
|
+
* // findLast scans from tail to head, returns first match
|
|
3172
|
+
* const found = list.findLast(node => node.value < 4);
|
|
3053
3173
|
* console.log(found); // 3;
|
|
3054
3174
|
*/
|
|
3175
|
+
/**
|
|
3176
|
+
* @deprecated Use `findLast` instead. Will be removed in a future major version.
|
|
3177
|
+
*/
|
|
3055
3178
|
getBackward(elementNodeOrPredicate) {
|
|
3179
|
+
return this.findLast(elementNodeOrPredicate);
|
|
3180
|
+
}
|
|
3181
|
+
/**
|
|
3182
|
+
* Find the first value matching a predicate scanning backward (tail → head).
|
|
3183
|
+
* @remarks Time O(N), Space O(1)
|
|
3184
|
+
* @param elementNodeOrPredicate - Element, node, or predicate to match.
|
|
3185
|
+
* @returns Matching value or undefined.
|
|
3186
|
+
|
|
3187
|
+
|
|
3188
|
+
* @example
|
|
3189
|
+
* // Find value scanning from tail
|
|
3190
|
+
* const list = new DoublyLinkedList<number>([1, 2, 3, 4]);
|
|
3191
|
+
* // findLast scans from tail to head, returns first match
|
|
3192
|
+
* const found = list.findLast(node => node.value < 4);
|
|
3193
|
+
* console.log(found); // 3;
|
|
3194
|
+
*/
|
|
3195
|
+
findLast(elementNodeOrPredicate) {
|
|
3056
3196
|
const predicate = this._ensurePredicate(elementNodeOrPredicate);
|
|
3057
3197
|
let current = this.tail;
|
|
3058
3198
|
while (current) {
|
|
@@ -3061,6 +3201,22 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
3061
3201
|
}
|
|
3062
3202
|
return void 0;
|
|
3063
3203
|
}
|
|
3204
|
+
/**
|
|
3205
|
+
* Find the index of the last value matching a predicate (scans tail → head).
|
|
3206
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
|
|
3207
|
+
* @param predicate - Function called with (value, index, list).
|
|
3208
|
+
* @returns Matching index, or -1 if not found.
|
|
3209
|
+
*/
|
|
3210
|
+
findLastIndex(predicate) {
|
|
3211
|
+
let current = this.tail;
|
|
3212
|
+
let index = this.length - 1;
|
|
3213
|
+
while (current) {
|
|
3214
|
+
if (predicate(current.value, index, this)) return index;
|
|
3215
|
+
current = current.prev;
|
|
3216
|
+
index--;
|
|
3217
|
+
}
|
|
3218
|
+
return -1;
|
|
3219
|
+
}
|
|
3064
3220
|
/**
|
|
3065
3221
|
* Reverse the list in place.
|
|
3066
3222
|
* @remarks Time O(N), Space O(1)
|
|
@@ -3100,6 +3256,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
3100
3256
|
|
|
3101
3257
|
|
|
3102
3258
|
|
|
3259
|
+
|
|
3260
|
+
|
|
3261
|
+
|
|
3103
3262
|
|
|
3104
3263
|
|
|
3105
3264
|
|
|
@@ -3186,6 +3345,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
3186
3345
|
|
|
3187
3346
|
|
|
3188
3347
|
|
|
3348
|
+
|
|
3349
|
+
|
|
3350
|
+
|
|
3189
3351
|
|
|
3190
3352
|
|
|
3191
3353
|
|
|
@@ -3243,6 +3405,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
3243
3405
|
|
|
3244
3406
|
|
|
3245
3407
|
|
|
3408
|
+
|
|
3409
|
+
|
|
3410
|
+
|
|
3246
3411
|
|
|
3247
3412
|
|
|
3248
3413
|
|
|
@@ -3319,6 +3484,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
3319
3484
|
|
|
3320
3485
|
|
|
3321
3486
|
|
|
3487
|
+
|
|
3488
|
+
|
|
3489
|
+
|
|
3322
3490
|
|
|
3323
3491
|
|
|
3324
3492
|
|
|
@@ -3726,6 +3894,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
3726
3894
|
|
|
3727
3895
|
|
|
3728
3896
|
|
|
3897
|
+
|
|
3898
|
+
|
|
3899
|
+
|
|
3729
3900
|
|
|
3730
3901
|
|
|
3731
3902
|
|
|
@@ -3772,6 +3943,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
3772
3943
|
|
|
3773
3944
|
|
|
3774
3945
|
|
|
3946
|
+
|
|
3947
|
+
|
|
3948
|
+
|
|
3775
3949
|
|
|
3776
3950
|
|
|
3777
3951
|
|
|
@@ -3821,6 +3995,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
3821
3995
|
|
|
3822
3996
|
|
|
3823
3997
|
|
|
3998
|
+
|
|
3999
|
+
|
|
4000
|
+
|
|
3824
4001
|
|
|
3825
4002
|
|
|
3826
4003
|
|
|
@@ -3878,6 +4055,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
3878
4055
|
|
|
3879
4056
|
|
|
3880
4057
|
|
|
4058
|
+
|
|
4059
|
+
|
|
4060
|
+
|
|
3881
4061
|
|
|
3882
4062
|
|
|
3883
4063
|
|
|
@@ -3960,6 +4140,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
3960
4140
|
|
|
3961
4141
|
|
|
3962
4142
|
|
|
4143
|
+
|
|
4144
|
+
|
|
4145
|
+
|
|
3963
4146
|
|
|
3964
4147
|
|
|
3965
4148
|
|
|
@@ -4027,6 +4210,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4027
4210
|
|
|
4028
4211
|
|
|
4029
4212
|
|
|
4213
|
+
|
|
4214
|
+
|
|
4215
|
+
|
|
4030
4216
|
|
|
4031
4217
|
|
|
4032
4218
|
|
|
@@ -4077,6 +4263,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4077
4263
|
|
|
4078
4264
|
|
|
4079
4265
|
|
|
4266
|
+
|
|
4267
|
+
|
|
4268
|
+
|
|
4080
4269
|
|
|
4081
4270
|
|
|
4082
4271
|
|
|
@@ -4147,6 +4336,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4147
4336
|
|
|
4148
4337
|
|
|
4149
4338
|
|
|
4339
|
+
|
|
4340
|
+
|
|
4341
|
+
|
|
4150
4342
|
|
|
4151
4343
|
|
|
4152
4344
|
|
|
@@ -4197,6 +4389,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4197
4389
|
|
|
4198
4390
|
|
|
4199
4391
|
|
|
4392
|
+
|
|
4393
|
+
|
|
4394
|
+
|
|
4200
4395
|
|
|
4201
4396
|
|
|
4202
4397
|
|
|
@@ -4249,6 +4444,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4249
4444
|
|
|
4250
4445
|
|
|
4251
4446
|
|
|
4447
|
+
|
|
4448
|
+
|
|
4449
|
+
|
|
4252
4450
|
|
|
4253
4451
|
|
|
4254
4452
|
|
|
@@ -4299,6 +4497,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4299
4497
|
|
|
4300
4498
|
|
|
4301
4499
|
|
|
4500
|
+
|
|
4501
|
+
|
|
4502
|
+
|
|
4302
4503
|
|
|
4303
4504
|
|
|
4304
4505
|
|
|
@@ -4352,6 +4553,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4352
4553
|
|
|
4353
4554
|
|
|
4354
4555
|
|
|
4556
|
+
|
|
4557
|
+
|
|
4558
|
+
|
|
4355
4559
|
|
|
4356
4560
|
|
|
4357
4561
|
|
|
@@ -4410,6 +4614,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4410
4614
|
|
|
4411
4615
|
|
|
4412
4616
|
|
|
4617
|
+
|
|
4618
|
+
|
|
4619
|
+
|
|
4413
4620
|
|
|
4414
4621
|
|
|
4415
4622
|
|
|
@@ -4466,6 +4673,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4466
4673
|
|
|
4467
4674
|
|
|
4468
4675
|
|
|
4676
|
+
|
|
4677
|
+
|
|
4678
|
+
|
|
4469
4679
|
|
|
4470
4680
|
|
|
4471
4681
|
|
|
@@ -4521,6 +4731,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4521
4731
|
|
|
4522
4732
|
|
|
4523
4733
|
|
|
4734
|
+
|
|
4735
|
+
|
|
4736
|
+
|
|
4524
4737
|
|
|
4525
4738
|
|
|
4526
4739
|
|
|
@@ -4582,6 +4795,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4582
4795
|
|
|
4583
4796
|
|
|
4584
4797
|
|
|
4798
|
+
|
|
4799
|
+
|
|
4800
|
+
|
|
4585
4801
|
|
|
4586
4802
|
|
|
4587
4803
|
|
|
@@ -4651,6 +4867,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4651
4867
|
|
|
4652
4868
|
|
|
4653
4869
|
|
|
4870
|
+
|
|
4871
|
+
|
|
4872
|
+
|
|
4654
4873
|
|
|
4655
4874
|
|
|
4656
4875
|
|
|
@@ -4704,6 +4923,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4704
4923
|
|
|
4705
4924
|
|
|
4706
4925
|
|
|
4926
|
+
|
|
4927
|
+
|
|
4928
|
+
|
|
4707
4929
|
|
|
4708
4930
|
|
|
4709
4931
|
|
package/dist/cjs/matrix.cjs
CHANGED
|
@@ -157,6 +157,9 @@ var Matrix = class _Matrix {
|
|
|
157
157
|
|
|
158
158
|
|
|
159
159
|
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
160
163
|
|
|
161
164
|
|
|
162
165
|
|
|
@@ -229,6 +232,9 @@ var Matrix = class _Matrix {
|
|
|
229
232
|
|
|
230
233
|
|
|
231
234
|
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
|
|
232
238
|
|
|
233
239
|
|
|
234
240
|
|
|
@@ -297,6 +303,9 @@ var Matrix = class _Matrix {
|
|
|
297
303
|
|
|
298
304
|
|
|
299
305
|
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
|
|
300
309
|
|
|
301
310
|
|
|
302
311
|
|
|
@@ -387,6 +396,9 @@ var Matrix = class _Matrix {
|
|
|
387
396
|
|
|
388
397
|
|
|
389
398
|
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
|
|
390
402
|
|
|
391
403
|
|
|
392
404
|
|
|
@@ -460,6 +472,9 @@ var Matrix = class _Matrix {
|
|
|
460
472
|
|
|
461
473
|
|
|
462
474
|
|
|
475
|
+
|
|
476
|
+
|
|
477
|
+
|
|
463
478
|
|
|
464
479
|
|
|
465
480
|
|
|
@@ -555,6 +570,9 @@ var Matrix = class _Matrix {
|
|
|
555
570
|
|
|
556
571
|
|
|
557
572
|
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
|
|
558
576
|
|
|
559
577
|
|
|
560
578
|
|
|
@@ -637,6 +655,9 @@ var Matrix = class _Matrix {
|
|
|
637
655
|
|
|
638
656
|
|
|
639
657
|
|
|
658
|
+
|
|
659
|
+
|
|
660
|
+
|
|
640
661
|
|
|
641
662
|
|
|
642
663
|
|
|
@@ -744,6 +765,9 @@ var Matrix = class _Matrix {
|
|
|
744
765
|
|
|
745
766
|
|
|
746
767
|
|
|
768
|
+
|
|
769
|
+
|
|
770
|
+
|
|
747
771
|
|
|
748
772
|
|
|
749
773
|
|