queue-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/dist/cjs/index.cjs +435 -0
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs-legacy/index.cjs +435 -0
- package/dist/cjs-legacy/index.cjs.map +1 -1
- package/dist/esm/index.mjs +435 -0
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm-legacy/index.mjs +435 -0
- package/dist/esm-legacy/index.mjs.map +1 -1
- 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/queue-typed.js +435 -0
- package/dist/umd/queue-typed.js.map +1 -1
- package/dist/umd/queue-typed.min.js +1 -1
- package/dist/umd/queue-typed.min.js.map +1 -1
- package/package.json +2 -2
- 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/dist/umd/queue-typed.js
CHANGED
|
@@ -232,6 +232,35 @@ var queueTyped = (() => {
|
|
|
232
232
|
for (const ele of this) if (ele === element) return true;
|
|
233
233
|
return false;
|
|
234
234
|
}
|
|
235
|
+
/**
|
|
236
|
+
* Check whether a value exists (Array-compatible alias for `has`).
|
|
237
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
|
|
238
|
+
* @param element - Element to search for (uses `===`).
|
|
239
|
+
* @returns `true` if found.
|
|
240
|
+
*/
|
|
241
|
+
includes(element) {
|
|
242
|
+
return this.has(element);
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Return an iterator of `[index, value]` pairs (Array-compatible).
|
|
246
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
|
|
247
|
+
*/
|
|
248
|
+
*entries() {
|
|
249
|
+
let index = 0;
|
|
250
|
+
for (const value of this) {
|
|
251
|
+
yield [index++, value];
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Return an iterator of numeric indices (Array-compatible).
|
|
256
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
|
|
257
|
+
*/
|
|
258
|
+
*keys() {
|
|
259
|
+
let index = 0;
|
|
260
|
+
for (const _ of this) {
|
|
261
|
+
yield index++;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
235
264
|
/**
|
|
236
265
|
* Reduces all elements to a single accumulated value.
|
|
237
266
|
*
|
|
@@ -536,6 +565,16 @@ var queueTyped = (() => {
|
|
|
536
565
|
}
|
|
537
566
|
return this;
|
|
538
567
|
}
|
|
568
|
+
/**
|
|
569
|
+
* Return a new instance of the same type with elements in reverse order (non-mutating).
|
|
570
|
+
* @remarks Provided for familiarity when migrating from Array (ES2023 `toReversed`). Time O(n), Space O(n).
|
|
571
|
+
* @returns A new reversed instance.
|
|
572
|
+
*/
|
|
573
|
+
toReversed() {
|
|
574
|
+
const cloned = this.clone();
|
|
575
|
+
cloned.reverse();
|
|
576
|
+
return cloned;
|
|
577
|
+
}
|
|
539
578
|
};
|
|
540
579
|
var LinearLinkedBase = class extends LinearBase {
|
|
541
580
|
constructor(options) {
|
|
@@ -820,6 +859,13 @@ var queueTyped = (() => {
|
|
|
820
859
|
|
|
821
860
|
|
|
822
861
|
|
|
862
|
+
|
|
863
|
+
|
|
864
|
+
|
|
865
|
+
|
|
866
|
+
|
|
867
|
+
|
|
868
|
+
|
|
823
869
|
|
|
824
870
|
|
|
825
871
|
|
|
@@ -887,6 +933,13 @@ var queueTyped = (() => {
|
|
|
887
933
|
|
|
888
934
|
|
|
889
935
|
|
|
936
|
+
|
|
937
|
+
|
|
938
|
+
|
|
939
|
+
|
|
940
|
+
|
|
941
|
+
|
|
942
|
+
|
|
890
943
|
|
|
891
944
|
|
|
892
945
|
|
|
@@ -960,6 +1013,13 @@ var queueTyped = (() => {
|
|
|
960
1013
|
|
|
961
1014
|
|
|
962
1015
|
|
|
1016
|
+
|
|
1017
|
+
|
|
1018
|
+
|
|
1019
|
+
|
|
1020
|
+
|
|
1021
|
+
|
|
1022
|
+
|
|
963
1023
|
|
|
964
1024
|
|
|
965
1025
|
|
|
@@ -1014,6 +1074,13 @@ var queueTyped = (() => {
|
|
|
1014
1074
|
|
|
1015
1075
|
|
|
1016
1076
|
|
|
1077
|
+
|
|
1078
|
+
|
|
1079
|
+
|
|
1080
|
+
|
|
1081
|
+
|
|
1082
|
+
|
|
1083
|
+
|
|
1017
1084
|
|
|
1018
1085
|
|
|
1019
1086
|
|
|
@@ -1129,6 +1196,13 @@ var queueTyped = (() => {
|
|
|
1129
1196
|
|
|
1130
1197
|
|
|
1131
1198
|
|
|
1199
|
+
|
|
1200
|
+
|
|
1201
|
+
|
|
1202
|
+
|
|
1203
|
+
|
|
1204
|
+
|
|
1205
|
+
|
|
1132
1206
|
|
|
1133
1207
|
|
|
1134
1208
|
|
|
@@ -1188,6 +1262,13 @@ var queueTyped = (() => {
|
|
|
1188
1262
|
|
|
1189
1263
|
|
|
1190
1264
|
|
|
1265
|
+
|
|
1266
|
+
|
|
1267
|
+
|
|
1268
|
+
|
|
1269
|
+
|
|
1270
|
+
|
|
1271
|
+
|
|
1191
1272
|
|
|
1192
1273
|
|
|
1193
1274
|
|
|
@@ -1236,6 +1317,13 @@ var queueTyped = (() => {
|
|
|
1236
1317
|
|
|
1237
1318
|
|
|
1238
1319
|
|
|
1320
|
+
|
|
1321
|
+
|
|
1322
|
+
|
|
1323
|
+
|
|
1324
|
+
|
|
1325
|
+
|
|
1326
|
+
|
|
1239
1327
|
|
|
1240
1328
|
|
|
1241
1329
|
|
|
@@ -1290,6 +1378,13 @@ var queueTyped = (() => {
|
|
|
1290
1378
|
|
|
1291
1379
|
|
|
1292
1380
|
|
|
1381
|
+
|
|
1382
|
+
|
|
1383
|
+
|
|
1384
|
+
|
|
1385
|
+
|
|
1386
|
+
|
|
1387
|
+
|
|
1293
1388
|
|
|
1294
1389
|
|
|
1295
1390
|
|
|
@@ -1349,6 +1444,13 @@ var queueTyped = (() => {
|
|
|
1349
1444
|
|
|
1350
1445
|
|
|
1351
1446
|
|
|
1447
|
+
|
|
1448
|
+
|
|
1449
|
+
|
|
1450
|
+
|
|
1451
|
+
|
|
1452
|
+
|
|
1453
|
+
|
|
1352
1454
|
|
|
1353
1455
|
|
|
1354
1456
|
|
|
@@ -1416,6 +1518,13 @@ var queueTyped = (() => {
|
|
|
1416
1518
|
|
|
1417
1519
|
|
|
1418
1520
|
|
|
1521
|
+
|
|
1522
|
+
|
|
1523
|
+
|
|
1524
|
+
|
|
1525
|
+
|
|
1526
|
+
|
|
1527
|
+
|
|
1419
1528
|
|
|
1420
1529
|
|
|
1421
1530
|
|
|
@@ -1460,6 +1569,13 @@ var queueTyped = (() => {
|
|
|
1460
1569
|
|
|
1461
1570
|
|
|
1462
1571
|
|
|
1572
|
+
|
|
1573
|
+
|
|
1574
|
+
|
|
1575
|
+
|
|
1576
|
+
|
|
1577
|
+
|
|
1578
|
+
|
|
1463
1579
|
|
|
1464
1580
|
|
|
1465
1581
|
|
|
@@ -1510,6 +1626,13 @@ var queueTyped = (() => {
|
|
|
1510
1626
|
|
|
1511
1627
|
|
|
1512
1628
|
|
|
1629
|
+
|
|
1630
|
+
|
|
1631
|
+
|
|
1632
|
+
|
|
1633
|
+
|
|
1634
|
+
|
|
1635
|
+
|
|
1513
1636
|
|
|
1514
1637
|
|
|
1515
1638
|
|
|
@@ -1726,6 +1849,13 @@ var queueTyped = (() => {
|
|
|
1726
1849
|
|
|
1727
1850
|
|
|
1728
1851
|
|
|
1852
|
+
|
|
1853
|
+
|
|
1854
|
+
|
|
1855
|
+
|
|
1856
|
+
|
|
1857
|
+
|
|
1858
|
+
|
|
1729
1859
|
|
|
1730
1860
|
|
|
1731
1861
|
|
|
@@ -1780,6 +1910,13 @@ var queueTyped = (() => {
|
|
|
1780
1910
|
|
|
1781
1911
|
|
|
1782
1912
|
|
|
1913
|
+
|
|
1914
|
+
|
|
1915
|
+
|
|
1916
|
+
|
|
1917
|
+
|
|
1918
|
+
|
|
1919
|
+
|
|
1783
1920
|
|
|
1784
1921
|
|
|
1785
1922
|
|
|
@@ -1862,6 +1999,13 @@ var queueTyped = (() => {
|
|
|
1862
1999
|
|
|
1863
2000
|
|
|
1864
2001
|
|
|
2002
|
+
|
|
2003
|
+
|
|
2004
|
+
|
|
2005
|
+
|
|
2006
|
+
|
|
2007
|
+
|
|
2008
|
+
|
|
1865
2009
|
|
|
1866
2010
|
|
|
1867
2011
|
|
|
@@ -2093,6 +2237,13 @@ var queueTyped = (() => {
|
|
|
2093
2237
|
|
|
2094
2238
|
|
|
2095
2239
|
|
|
2240
|
+
|
|
2241
|
+
|
|
2242
|
+
|
|
2243
|
+
|
|
2244
|
+
|
|
2245
|
+
|
|
2246
|
+
|
|
2096
2247
|
|
|
2097
2248
|
|
|
2098
2249
|
|
|
@@ -2143,6 +2294,13 @@ var queueTyped = (() => {
|
|
|
2143
2294
|
|
|
2144
2295
|
|
|
2145
2296
|
|
|
2297
|
+
|
|
2298
|
+
|
|
2299
|
+
|
|
2300
|
+
|
|
2301
|
+
|
|
2302
|
+
|
|
2303
|
+
|
|
2146
2304
|
|
|
2147
2305
|
|
|
2148
2306
|
|
|
@@ -2160,6 +2318,14 @@ var queueTyped = (() => {
|
|
|
2160
2318
|
get first() {
|
|
2161
2319
|
return this.length > 0 ? this.elements[this._offset] : void 0;
|
|
2162
2320
|
}
|
|
2321
|
+
/**
|
|
2322
|
+
* Peek at the front element without removing it (alias for `first`).
|
|
2323
|
+
* @remarks Time O(1), Space O(1)
|
|
2324
|
+
* @returns Front element or undefined.
|
|
2325
|
+
*/
|
|
2326
|
+
peek() {
|
|
2327
|
+
return this.first;
|
|
2328
|
+
}
|
|
2163
2329
|
/**
|
|
2164
2330
|
* Get the last element (back) without removing it.
|
|
2165
2331
|
* @remarks Time O(1), Space O(1)
|
|
@@ -2209,6 +2375,13 @@ var queueTyped = (() => {
|
|
|
2209
2375
|
|
|
2210
2376
|
|
|
2211
2377
|
|
|
2378
|
+
|
|
2379
|
+
|
|
2380
|
+
|
|
2381
|
+
|
|
2382
|
+
|
|
2383
|
+
|
|
2384
|
+
|
|
2212
2385
|
|
|
2213
2386
|
|
|
2214
2387
|
|
|
@@ -2271,6 +2444,13 @@ var queueTyped = (() => {
|
|
|
2271
2444
|
|
|
2272
2445
|
|
|
2273
2446
|
|
|
2447
|
+
|
|
2448
|
+
|
|
2449
|
+
|
|
2450
|
+
|
|
2451
|
+
|
|
2452
|
+
|
|
2453
|
+
|
|
2274
2454
|
|
|
2275
2455
|
|
|
2276
2456
|
|
|
@@ -2340,6 +2520,13 @@ var queueTyped = (() => {
|
|
|
2340
2520
|
|
|
2341
2521
|
|
|
2342
2522
|
|
|
2523
|
+
|
|
2524
|
+
|
|
2525
|
+
|
|
2526
|
+
|
|
2527
|
+
|
|
2528
|
+
|
|
2529
|
+
|
|
2343
2530
|
|
|
2344
2531
|
|
|
2345
2532
|
|
|
@@ -2399,6 +2586,13 @@ var queueTyped = (() => {
|
|
|
2399
2586
|
|
|
2400
2587
|
|
|
2401
2588
|
|
|
2589
|
+
|
|
2590
|
+
|
|
2591
|
+
|
|
2592
|
+
|
|
2593
|
+
|
|
2594
|
+
|
|
2595
|
+
|
|
2402
2596
|
|
|
2403
2597
|
|
|
2404
2598
|
|
|
@@ -2451,6 +2645,13 @@ var queueTyped = (() => {
|
|
|
2451
2645
|
|
|
2452
2646
|
|
|
2453
2647
|
|
|
2648
|
+
|
|
2649
|
+
|
|
2650
|
+
|
|
2651
|
+
|
|
2652
|
+
|
|
2653
|
+
|
|
2654
|
+
|
|
2454
2655
|
|
|
2455
2656
|
|
|
2456
2657
|
|
|
@@ -2505,6 +2706,21 @@ var queueTyped = (() => {
|
|
|
2505
2706
|
this._elements[this._offset + index] = newElement;
|
|
2506
2707
|
return true;
|
|
2507
2708
|
}
|
|
2709
|
+
/**
|
|
2710
|
+
* Delete the first element that satisfies a predicate.
|
|
2711
|
+
* @remarks Time O(N), Space O(N)
|
|
2712
|
+
* @param predicate - Function (value, index, queue) → boolean to decide deletion.
|
|
2713
|
+
* @returns True if a match was removed.
|
|
2714
|
+
*/
|
|
2715
|
+
deleteWhere(predicate) {
|
|
2716
|
+
for (let i = 0; i < this.length; i++) {
|
|
2717
|
+
if (predicate(this._elements[this._offset + i], i, this)) {
|
|
2718
|
+
this.deleteAt(i);
|
|
2719
|
+
return true;
|
|
2720
|
+
}
|
|
2721
|
+
}
|
|
2722
|
+
return false;
|
|
2723
|
+
}
|
|
2508
2724
|
/**
|
|
2509
2725
|
* Reverse the queue in-place by compacting then reversing.
|
|
2510
2726
|
* @remarks Time O(N), Space O(N)
|
|
@@ -2544,6 +2760,13 @@ var queueTyped = (() => {
|
|
|
2544
2760
|
|
|
2545
2761
|
|
|
2546
2762
|
|
|
2763
|
+
|
|
2764
|
+
|
|
2765
|
+
|
|
2766
|
+
|
|
2767
|
+
|
|
2768
|
+
|
|
2769
|
+
|
|
2547
2770
|
|
|
2548
2771
|
|
|
2549
2772
|
|
|
@@ -2590,6 +2813,13 @@ var queueTyped = (() => {
|
|
|
2590
2813
|
|
|
2591
2814
|
|
|
2592
2815
|
|
|
2816
|
+
|
|
2817
|
+
|
|
2818
|
+
|
|
2819
|
+
|
|
2820
|
+
|
|
2821
|
+
|
|
2822
|
+
|
|
2593
2823
|
|
|
2594
2824
|
|
|
2595
2825
|
|
|
@@ -2659,6 +2889,13 @@ var queueTyped = (() => {
|
|
|
2659
2889
|
|
|
2660
2890
|
|
|
2661
2891
|
|
|
2892
|
+
|
|
2893
|
+
|
|
2894
|
+
|
|
2895
|
+
|
|
2896
|
+
|
|
2897
|
+
|
|
2898
|
+
|
|
2662
2899
|
|
|
2663
2900
|
|
|
2664
2901
|
|
|
@@ -2712,6 +2949,13 @@ var queueTyped = (() => {
|
|
|
2712
2949
|
|
|
2713
2950
|
|
|
2714
2951
|
|
|
2952
|
+
|
|
2953
|
+
|
|
2954
|
+
|
|
2955
|
+
|
|
2956
|
+
|
|
2957
|
+
|
|
2958
|
+
|
|
2715
2959
|
|
|
2716
2960
|
|
|
2717
2961
|
|
|
@@ -2769,6 +3013,13 @@ var queueTyped = (() => {
|
|
|
2769
3013
|
|
|
2770
3014
|
|
|
2771
3015
|
|
|
3016
|
+
|
|
3017
|
+
|
|
3018
|
+
|
|
3019
|
+
|
|
3020
|
+
|
|
3021
|
+
|
|
3022
|
+
|
|
2772
3023
|
|
|
2773
3024
|
|
|
2774
3025
|
|
|
@@ -3049,6 +3300,37 @@ var queueTyped = (() => {
|
|
|
3049
3300
|
|
|
3050
3301
|
|
|
3051
3302
|
|
|
3303
|
+
|
|
3304
|
+
|
|
3305
|
+
|
|
3306
|
+
|
|
3307
|
+
|
|
3308
|
+
* @example
|
|
3309
|
+
* // Deque peek at both ends
|
|
3310
|
+
* const deque = new Deque<number>([10, 20, 30, 40, 50]);
|
|
3311
|
+
*
|
|
3312
|
+
* // Get first element without removing
|
|
3313
|
+
* const first = deque.at(0);
|
|
3314
|
+
* console.log(first); // 10;
|
|
3315
|
+
*
|
|
3316
|
+
* // Get last element without removing
|
|
3317
|
+
* const last = deque.at(deque.length - 1);
|
|
3318
|
+
* console.log(last); // 50;
|
|
3319
|
+
*
|
|
3320
|
+
* // Length unchanged
|
|
3321
|
+
* console.log(deque.length); // 5;
|
|
3322
|
+
*/
|
|
3323
|
+
/**
|
|
3324
|
+
* Peek at the front element without removing it (alias for `first`).
|
|
3325
|
+
* @remarks Time O(1), Space O(1)
|
|
3326
|
+
* @returns Front element or undefined.
|
|
3327
|
+
*/
|
|
3328
|
+
peek() {
|
|
3329
|
+
return this.first;
|
|
3330
|
+
}
|
|
3331
|
+
/**
|
|
3332
|
+
* Deque peek at both ends
|
|
3333
|
+
|
|
3052
3334
|
|
|
3053
3335
|
|
|
3054
3336
|
* @example
|
|
@@ -3101,6 +3383,13 @@ var queueTyped = (() => {
|
|
|
3101
3383
|
|
|
3102
3384
|
|
|
3103
3385
|
|
|
3386
|
+
|
|
3387
|
+
|
|
3388
|
+
|
|
3389
|
+
|
|
3390
|
+
|
|
3391
|
+
|
|
3392
|
+
|
|
3104
3393
|
|
|
3105
3394
|
|
|
3106
3395
|
|
|
@@ -3164,6 +3453,13 @@ var queueTyped = (() => {
|
|
|
3164
3453
|
|
|
3165
3454
|
|
|
3166
3455
|
|
|
3456
|
+
|
|
3457
|
+
|
|
3458
|
+
|
|
3459
|
+
|
|
3460
|
+
|
|
3461
|
+
|
|
3462
|
+
|
|
3167
3463
|
|
|
3168
3464
|
|
|
3169
3465
|
|
|
@@ -3240,6 +3536,13 @@ var queueTyped = (() => {
|
|
|
3240
3536
|
|
|
3241
3537
|
|
|
3242
3538
|
|
|
3539
|
+
|
|
3540
|
+
|
|
3541
|
+
|
|
3542
|
+
|
|
3543
|
+
|
|
3544
|
+
|
|
3545
|
+
|
|
3243
3546
|
|
|
3244
3547
|
|
|
3245
3548
|
|
|
@@ -3303,6 +3606,13 @@ var queueTyped = (() => {
|
|
|
3303
3606
|
|
|
3304
3607
|
|
|
3305
3608
|
|
|
3609
|
+
|
|
3610
|
+
|
|
3611
|
+
|
|
3612
|
+
|
|
3613
|
+
|
|
3614
|
+
|
|
3615
|
+
|
|
3306
3616
|
|
|
3307
3617
|
|
|
3308
3618
|
|
|
@@ -3367,6 +3677,13 @@ var queueTyped = (() => {
|
|
|
3367
3677
|
|
|
3368
3678
|
|
|
3369
3679
|
|
|
3680
|
+
|
|
3681
|
+
|
|
3682
|
+
|
|
3683
|
+
|
|
3684
|
+
|
|
3685
|
+
|
|
3686
|
+
|
|
3370
3687
|
|
|
3371
3688
|
|
|
3372
3689
|
|
|
@@ -3472,6 +3789,13 @@ var queueTyped = (() => {
|
|
|
3472
3789
|
|
|
3473
3790
|
|
|
3474
3791
|
|
|
3792
|
+
|
|
3793
|
+
|
|
3794
|
+
|
|
3795
|
+
|
|
3796
|
+
|
|
3797
|
+
|
|
3798
|
+
|
|
3475
3799
|
|
|
3476
3800
|
|
|
3477
3801
|
|
|
@@ -3517,6 +3841,13 @@ var queueTyped = (() => {
|
|
|
3517
3841
|
|
|
3518
3842
|
|
|
3519
3843
|
|
|
3844
|
+
|
|
3845
|
+
|
|
3846
|
+
|
|
3847
|
+
|
|
3848
|
+
|
|
3849
|
+
|
|
3850
|
+
|
|
3520
3851
|
|
|
3521
3852
|
|
|
3522
3853
|
|
|
@@ -3566,6 +3897,13 @@ var queueTyped = (() => {
|
|
|
3566
3897
|
|
|
3567
3898
|
|
|
3568
3899
|
|
|
3900
|
+
|
|
3901
|
+
|
|
3902
|
+
|
|
3903
|
+
|
|
3904
|
+
|
|
3905
|
+
|
|
3906
|
+
|
|
3569
3907
|
|
|
3570
3908
|
|
|
3571
3909
|
|
|
@@ -3766,6 +4104,13 @@ var queueTyped = (() => {
|
|
|
3766
4104
|
|
|
3767
4105
|
|
|
3768
4106
|
|
|
4107
|
+
|
|
4108
|
+
|
|
4109
|
+
|
|
4110
|
+
|
|
4111
|
+
|
|
4112
|
+
|
|
4113
|
+
|
|
3769
4114
|
|
|
3770
4115
|
|
|
3771
4116
|
|
|
@@ -3860,6 +4205,68 @@ var queueTyped = (() => {
|
|
|
3860
4205
|
|
|
3861
4206
|
|
|
3862
4207
|
|
|
4208
|
+
|
|
4209
|
+
|
|
4210
|
+
|
|
4211
|
+
|
|
4212
|
+
|
|
4213
|
+
* @example
|
|
4214
|
+
* // Deque for...of iteration and reverse
|
|
4215
|
+
* const deque = new Deque<string>(['A', 'B', 'C', 'D']);
|
|
4216
|
+
*
|
|
4217
|
+
* // Iterate forward
|
|
4218
|
+
* const forward: string[] = [];
|
|
4219
|
+
* for (const item of deque) {
|
|
4220
|
+
* forward.push(item);
|
|
4221
|
+
* }
|
|
4222
|
+
* console.log(forward); // ['A', 'B', 'C', 'D'];
|
|
4223
|
+
*
|
|
4224
|
+
* // Reverse the deque
|
|
4225
|
+
* deque.reverse();
|
|
4226
|
+
* const backward: string[] = [];
|
|
4227
|
+
* for (const item of deque) {
|
|
4228
|
+
* backward.push(item);
|
|
4229
|
+
* }
|
|
4230
|
+
* console.log(backward); // ['D', 'C', 'B', 'A'];
|
|
4231
|
+
*/
|
|
4232
|
+
/**
|
|
4233
|
+
* Find the last value matching a predicate (scans back-to-front).
|
|
4234
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
|
|
4235
|
+
* @param predicate - Function called with (value, index, deque).
|
|
4236
|
+
* @returns Matching value or undefined.
|
|
4237
|
+
* @example
|
|
4238
|
+
* // Find last matching value
|
|
4239
|
+
* const d = new Deque([1, 2, 3, 4, 5]);
|
|
4240
|
+
* console.log(d.findLast(v => v > 2)); // 5;
|
|
4241
|
+
* console.log(d.findLast(v => v % 2 === 0)); // 4;
|
|
4242
|
+
*/
|
|
4243
|
+
findLast(predicate) {
|
|
4244
|
+
for (let i = this.length - 1; i >= 0; i--) {
|
|
4245
|
+
const val = this.at(i);
|
|
4246
|
+
if (predicate(val, i, this)) return val;
|
|
4247
|
+
}
|
|
4248
|
+
return void 0;
|
|
4249
|
+
}
|
|
4250
|
+
/**
|
|
4251
|
+
* Find the index of the last value matching a predicate (scans back-to-front).
|
|
4252
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
|
|
4253
|
+
* @param predicate - Function called with (value, index, deque).
|
|
4254
|
+
* @returns Matching index, or -1 if not found.
|
|
4255
|
+
* @example
|
|
4256
|
+
* // Find last matching index
|
|
4257
|
+
* const d = new Deque([10, 20, 30, 20, 10]);
|
|
4258
|
+
* console.log(d.findLastIndex(v => v === 20)); // 3;
|
|
4259
|
+
* console.log(d.findLastIndex(v => v === 10)); // 4;
|
|
4260
|
+
*/
|
|
4261
|
+
findLastIndex(predicate) {
|
|
4262
|
+
for (let i = this.length - 1; i >= 0; i--) {
|
|
4263
|
+
if (predicate(this.at(i), i, this)) return i;
|
|
4264
|
+
}
|
|
4265
|
+
return -1;
|
|
4266
|
+
}
|
|
4267
|
+
/**
|
|
4268
|
+
* Deque for...of iteration and reverse
|
|
4269
|
+
|
|
3863
4270
|
|
|
3864
4271
|
* @example
|
|
3865
4272
|
* // Deque for...of iteration and reverse
|
|
@@ -3965,6 +4372,13 @@ var queueTyped = (() => {
|
|
|
3965
4372
|
|
|
3966
4373
|
|
|
3967
4374
|
|
|
4375
|
+
|
|
4376
|
+
|
|
4377
|
+
|
|
4378
|
+
|
|
4379
|
+
|
|
4380
|
+
|
|
4381
|
+
|
|
3968
4382
|
|
|
3969
4383
|
|
|
3970
4384
|
|
|
@@ -4036,6 +4450,13 @@ var queueTyped = (() => {
|
|
|
4036
4450
|
|
|
4037
4451
|
|
|
4038
4452
|
|
|
4453
|
+
|
|
4454
|
+
|
|
4455
|
+
|
|
4456
|
+
|
|
4457
|
+
|
|
4458
|
+
|
|
4459
|
+
|
|
4039
4460
|
|
|
4040
4461
|
|
|
4041
4462
|
|
|
@@ -4090,6 +4511,13 @@ var queueTyped = (() => {
|
|
|
4090
4511
|
|
|
4091
4512
|
|
|
4092
4513
|
|
|
4514
|
+
|
|
4515
|
+
|
|
4516
|
+
|
|
4517
|
+
|
|
4518
|
+
|
|
4519
|
+
|
|
4520
|
+
|
|
4093
4521
|
|
|
4094
4522
|
|
|
4095
4523
|
|
|
@@ -4164,6 +4592,13 @@ var queueTyped = (() => {
|
|
|
4164
4592
|
|
|
4165
4593
|
|
|
4166
4594
|
|
|
4595
|
+
|
|
4596
|
+
|
|
4597
|
+
|
|
4598
|
+
|
|
4599
|
+
|
|
4600
|
+
|
|
4601
|
+
|
|
4167
4602
|
|
|
4168
4603
|
|
|
4169
4604
|
|