binary-tree-typed 2.5.0 → 2.5.2
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 +771 -68
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs-legacy/index.cjs +771 -68
- package/dist/cjs-legacy/index.cjs.map +1 -1
- package/dist/esm/index.mjs +771 -69
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm-legacy/index.mjs +771 -69
- package/dist/esm-legacy/index.mjs.map +1 -1
- package/dist/types/common/error.d.ts +9 -0
- package/dist/types/common/index.d.ts +1 -1
- package/dist/types/data-structures/base/index.d.ts +1 -0
- package/dist/types/data-structures/base/iterable-entry-base.d.ts +8 -8
- package/dist/types/data-structures/base/linear-base.d.ts +3 -3
- package/dist/types/data-structures/binary-tree/avl-tree.d.ts +288 -0
- package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +336 -0
- package/dist/types/data-structures/binary-tree/binary-tree.d.ts +618 -18
- package/dist/types/data-structures/binary-tree/bst.d.ts +676 -1
- package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +456 -0
- package/dist/types/data-structures/binary-tree/segment-tree.d.ts +144 -1
- package/dist/types/data-structures/binary-tree/tree-map.d.ts +3307 -399
- package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +3285 -360
- package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +2674 -325
- package/dist/types/data-structures/binary-tree/tree-set.d.ts +3072 -287
- package/dist/types/data-structures/graph/abstract-graph.d.ts +4 -4
- package/dist/types/data-structures/graph/directed-graph.d.ts +240 -0
- package/dist/types/data-structures/graph/undirected-graph.d.ts +216 -0
- package/dist/types/data-structures/hash/hash-map.d.ts +274 -10
- package/dist/types/data-structures/heap/heap.d.ts +336 -0
- package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +411 -3
- package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +363 -3
- package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +434 -2
- package/dist/types/data-structures/matrix/matrix.d.ts +192 -0
- package/dist/types/data-structures/queue/deque.d.ts +364 -4
- package/dist/types/data-structures/queue/queue.d.ts +288 -0
- package/dist/types/data-structures/stack/stack.d.ts +240 -0
- package/dist/types/data-structures/trie/trie.d.ts +292 -4
- package/dist/types/interfaces/graph.d.ts +1 -1
- package/dist/types/types/common.d.ts +2 -2
- package/dist/types/types/data-structures/binary-tree/bst.d.ts +1 -0
- package/dist/types/types/data-structures/binary-tree/tree-map.d.ts +5 -0
- package/dist/types/types/data-structures/binary-tree/tree-multi-set.d.ts +4 -0
- package/dist/types/types/data-structures/binary-tree/tree-set.d.ts +4 -0
- package/dist/types/types/data-structures/heap/heap.d.ts +1 -0
- package/dist/types/types/data-structures/priority-queue/priority-queue.d.ts +1 -0
- package/dist/types/types/utils/validate-type.d.ts +4 -4
- package/dist/umd/binary-tree-typed.js +773 -71
- package/dist/umd/binary-tree-typed.js.map +1 -1
- package/dist/umd/binary-tree-typed.min.js +5 -5
- package/dist/umd/binary-tree-typed.min.js.map +1 -1
- package/package.json +2 -2
- package/src/common/error.ts +19 -1
- package/src/common/index.ts +1 -1
- package/src/data-structures/base/index.ts +1 -0
- package/src/data-structures/base/iterable-element-base.ts +3 -2
- package/src/data-structures/base/iterable-entry-base.ts +8 -8
- package/src/data-structures/base/linear-base.ts +3 -3
- package/src/data-structures/binary-tree/avl-tree.ts +299 -0
- package/src/data-structures/binary-tree/binary-indexed-tree.ts +341 -5
- package/src/data-structures/binary-tree/binary-tree.ts +606 -6
- package/src/data-structures/binary-tree/bst.ts +946 -7
- package/src/data-structures/binary-tree/red-black-tree.ts +472 -0
- package/src/data-structures/binary-tree/segment-tree.ts +145 -2
- package/src/data-structures/binary-tree/tree-map.ts +3423 -499
- package/src/data-structures/binary-tree/tree-multi-map.ts +3537 -596
- package/src/data-structures/binary-tree/tree-multi-set.ts +2855 -495
- package/src/data-structures/binary-tree/tree-set.ts +3209 -413
- package/src/data-structures/graph/abstract-graph.ts +6 -6
- package/src/data-structures/graph/directed-graph.ts +240 -0
- package/src/data-structures/graph/undirected-graph.ts +216 -0
- package/src/data-structures/hash/hash-map.ts +281 -19
- package/src/data-structures/heap/heap.ts +340 -4
- package/src/data-structures/heap/max-heap.ts +2 -2
- package/src/data-structures/linked-list/doubly-linked-list.ts +411 -3
- package/src/data-structures/linked-list/singly-linked-list.ts +363 -3
- package/src/data-structures/linked-list/skip-linked-list.ts +439 -7
- package/src/data-structures/matrix/matrix.ts +202 -10
- package/src/data-structures/priority-queue/max-priority-queue.ts +2 -2
- package/src/data-structures/queue/deque.ts +365 -5
- package/src/data-structures/queue/queue.ts +288 -0
- package/src/data-structures/stack/stack.ts +240 -0
- package/src/data-structures/trie/trie.ts +295 -7
- package/src/interfaces/graph.ts +1 -1
- package/src/types/common.ts +2 -2
- package/src/types/data-structures/binary-tree/bst.ts +1 -0
- package/src/types/data-structures/binary-tree/tree-map.ts +6 -0
- package/src/types/data-structures/binary-tree/tree-multi-set.ts +5 -0
- package/src/types/data-structures/binary-tree/tree-set.ts +5 -0
- package/src/types/data-structures/heap/heap.ts +1 -0
- package/src/types/data-structures/priority-queue/priority-queue.ts +1 -0
- package/src/types/utils/validate-type.ts +4 -4
|
@@ -89,14 +89,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
89
89
|
|
|
90
90
|
|
|
91
91
|
|
|
92
|
-
* @example
|
|
93
|
-
* // Check if empty
|
|
94
|
-
* console.log(new TreeMultiMap().isEmpty()); // true;
|
|
95
|
-
*/
|
|
96
|
-
isEmpty(): boolean;
|
|
97
|
-
/**
|
|
98
|
-
* Removes all entries from the map.
|
|
99
|
-
* @remarks Time O(1), Space O(1)
|
|
100
92
|
|
|
101
93
|
|
|
102
94
|
|
|
@@ -135,44 +127,8 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
135
127
|
|
|
136
128
|
|
|
137
129
|
|
|
138
|
-
* @example
|
|
139
|
-
* // Remove all entries
|
|
140
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
141
|
-
* mm.add(1, 'a');
|
|
142
|
-
* mm.clear();
|
|
143
|
-
* console.log(mm.isEmpty()); // true;
|
|
144
|
-
*/
|
|
145
|
-
clear(): void;
|
|
146
|
-
/**
|
|
147
|
-
* Bucket length for a key (missing => 0).
|
|
148
|
-
* @remarks Time O(log n), Space O(1)
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
* @example
|
|
152
|
-
* // Count values for key
|
|
153
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
154
|
-
* mm.add(1, 'a');
|
|
155
|
-
* mm.add(1, 'b');
|
|
156
|
-
* console.log(mm.count(1)); // 2;
|
|
157
|
-
*/
|
|
158
|
-
count(key: K): number;
|
|
159
|
-
/**
|
|
160
|
-
* Total number of values across all buckets (Σ bucket.length).
|
|
161
|
-
* @remarks Time O(n), Space O(1)
|
|
162
130
|
|
|
163
131
|
|
|
164
|
-
* @example
|
|
165
|
-
* // Total number of values
|
|
166
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
167
|
-
* mm.add(1, 'a');
|
|
168
|
-
* mm.add(1, 'b');
|
|
169
|
-
* mm.add(2, 'c');
|
|
170
|
-
* console.log(mm.totalSize); // 3;
|
|
171
|
-
*/
|
|
172
|
-
get totalSize(): number;
|
|
173
|
-
/**
|
|
174
|
-
* Whether the map contains the given key.
|
|
175
|
-
* @remarks Time O(log n), Space O(1)
|
|
176
132
|
|
|
177
133
|
|
|
178
134
|
|
|
@@ -225,17 +181,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
225
181
|
|
|
226
182
|
|
|
227
183
|
|
|
228
|
-
* @example
|
|
229
|
-
* // Check key existence
|
|
230
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
231
|
-
* mm.add(1, 'a');
|
|
232
|
-
* console.log(mm.has(1)); // true;
|
|
233
|
-
* console.log(mm.has(2)); // false;
|
|
234
|
-
*/
|
|
235
|
-
has(key: K): boolean;
|
|
236
|
-
/**
|
|
237
|
-
* Live bucket reference (do not auto-delete key if bucket becomes empty via mutation).
|
|
238
|
-
* @remarks Time O(log n), Space O(1)
|
|
239
184
|
|
|
240
185
|
|
|
241
186
|
|
|
@@ -264,6 +209,14 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
264
209
|
|
|
265
210
|
|
|
266
211
|
|
|
212
|
+
* @example
|
|
213
|
+
* // Check if empty
|
|
214
|
+
* console.log(new TreeMultiMap().isEmpty()); // true;
|
|
215
|
+
*/
|
|
216
|
+
isEmpty(): boolean;
|
|
217
|
+
/**
|
|
218
|
+
* Removes all entries from the map.
|
|
219
|
+
* @remarks Time O(1), Space O(1)
|
|
267
220
|
|
|
268
221
|
|
|
269
222
|
|
|
@@ -288,17 +241,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
288
241
|
|
|
289
242
|
|
|
290
243
|
|
|
291
|
-
* @example
|
|
292
|
-
* // Get values for key
|
|
293
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
294
|
-
* mm.add(1, 'a');
|
|
295
|
-
* mm.add(1, 'b');
|
|
296
|
-
* console.log(mm.get(1)); // ['a', 'b'];
|
|
297
|
-
*/
|
|
298
|
-
get(key: K): V[] | undefined;
|
|
299
|
-
/**
|
|
300
|
-
* Append a single value.
|
|
301
|
-
* @remarks Time O(log n), Space O(1)
|
|
302
244
|
|
|
303
245
|
|
|
304
246
|
|
|
@@ -331,18 +273,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
331
273
|
|
|
332
274
|
|
|
333
275
|
|
|
334
|
-
* @example
|
|
335
|
-
* // Add key-value pair
|
|
336
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
337
|
-
* mm.add(1, 'a');
|
|
338
|
-
* mm.add(1, 'b');
|
|
339
|
-
* mm.add(2, 'c');
|
|
340
|
-
* console.log(mm.get(1)); // ['a', 'b'];
|
|
341
|
-
*/
|
|
342
|
-
add(key: K, value: V): boolean;
|
|
343
|
-
/**
|
|
344
|
-
* Alias for compatibility with existing TreeMultiMap semantics.
|
|
345
|
-
* @remarks Time O(log n), Space O(1) for single value; O(log n + m) for bucket append
|
|
346
276
|
|
|
347
277
|
|
|
348
278
|
|
|
@@ -393,18 +323,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
393
323
|
|
|
394
324
|
|
|
395
325
|
|
|
396
|
-
* @example
|
|
397
|
-
* // Set values for key
|
|
398
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
399
|
-
* mm.set(1, 'a');
|
|
400
|
-
* mm.set(1, 'b');
|
|
401
|
-
* console.log(mm.get(1)); // ['a', 'b'];
|
|
402
|
-
*/
|
|
403
|
-
set(entry: [K | null | undefined, V[] | undefined] | K | null | undefined, value?: V): boolean;
|
|
404
|
-
set(key: K, value: V): boolean;
|
|
405
|
-
/**
|
|
406
|
-
* Deletes a key and its entire bucket.
|
|
407
|
-
* @remarks Time O(log n), Space O(1)
|
|
408
326
|
|
|
409
327
|
|
|
410
328
|
|
|
@@ -458,64 +376,3182 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
458
376
|
|
|
459
377
|
|
|
460
378
|
* @example
|
|
461
|
-
* // Remove
|
|
379
|
+
* // Remove all entries
|
|
462
380
|
* const mm = new TreeMultiMap<number, string>();
|
|
463
381
|
* mm.add(1, 'a');
|
|
464
|
-
* mm.
|
|
465
|
-
* mm.
|
|
466
|
-
* console.log(mm.has(1)); // false;
|
|
382
|
+
* mm.clear();
|
|
383
|
+
* console.log(mm.isEmpty()); // true;
|
|
467
384
|
*/
|
|
468
|
-
|
|
385
|
+
clear(): void;
|
|
469
386
|
/**
|
|
470
|
-
*
|
|
471
|
-
* @remarks Time O(log n
|
|
387
|
+
* Bucket length for a key (missing => 0).
|
|
388
|
+
* @remarks Time O(log n), Space O(1)
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
|
|
472
411
|
|
|
473
412
|
|
|
474
|
-
* @example
|
|
475
|
-
* // Check specific key-value
|
|
476
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
477
|
-
* mm.add(1, 'a');
|
|
478
|
-
* console.log(mm.hasEntry(1, 'a')); // true;
|
|
479
|
-
* console.log(mm.hasEntry(1, 'z')); // false;
|
|
480
|
-
*/
|
|
481
|
-
hasEntry(key: K, value: V, eq?: (a: V, b: V) => boolean): boolean;
|
|
482
|
-
/**
|
|
483
|
-
* Delete a single occurrence of a value from a key's bucket.
|
|
484
|
-
* @remarks Time O(log n + m), Space O(1) where m is bucket size
|
|
485
413
|
|
|
486
414
|
|
|
487
415
|
* @example
|
|
488
|
-
* //
|
|
416
|
+
* // Count values for key
|
|
489
417
|
* const mm = new TreeMultiMap<number, string>();
|
|
490
418
|
* mm.add(1, 'a');
|
|
491
419
|
* mm.add(1, 'b');
|
|
492
|
-
* mm.
|
|
493
|
-
* console.log(mm.get(1)); // ['b'];
|
|
420
|
+
* console.log(mm.count(1)); // 2;
|
|
494
421
|
*/
|
|
495
|
-
|
|
422
|
+
count(key: K): number;
|
|
496
423
|
/**
|
|
497
|
-
*
|
|
498
|
-
* @remarks Time O(
|
|
424
|
+
* Total number of values across all buckets (Σ bucket.length).
|
|
425
|
+
* @remarks Time O(n), Space O(1)
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
|
|
447
|
+
|
|
448
|
+
|
|
449
|
+
|
|
499
450
|
|
|
500
451
|
|
|
501
452
|
* @example
|
|
502
|
-
* //
|
|
453
|
+
* // Total number of values
|
|
503
454
|
* const mm = new TreeMultiMap<number, string>();
|
|
504
455
|
* mm.add(1, 'a');
|
|
505
|
-
* mm.add(1, 'a');
|
|
506
456
|
* mm.add(1, 'b');
|
|
507
|
-
*
|
|
508
|
-
* console.log(
|
|
509
|
-
*/
|
|
510
|
-
deleteValues(key: K, value: V, eq?: (a: V, b: V) => boolean): number;
|
|
511
|
-
/**
|
|
512
|
-
* Iterates over all entries as [key, bucket] pairs.
|
|
513
|
-
* @remarks Time O(n), Space O(1)
|
|
457
|
+
* mm.add(2, 'c');
|
|
458
|
+
* console.log(mm.totalSize); // 3;
|
|
514
459
|
*/
|
|
515
|
-
|
|
460
|
+
get totalSize(): number;
|
|
516
461
|
/**
|
|
517
|
-
*
|
|
518
|
-
* @remarks Time O(n), Space O(1)
|
|
462
|
+
* Whether the map contains the given key.
|
|
463
|
+
* @remarks Time O(log n), Space O(1)
|
|
464
|
+
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
|
|
477
|
+
|
|
478
|
+
|
|
479
|
+
|
|
480
|
+
|
|
481
|
+
|
|
482
|
+
|
|
483
|
+
|
|
484
|
+
|
|
485
|
+
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
|
|
489
|
+
|
|
490
|
+
|
|
491
|
+
|
|
492
|
+
|
|
493
|
+
|
|
494
|
+
|
|
495
|
+
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
|
|
501
|
+
|
|
502
|
+
|
|
503
|
+
|
|
504
|
+
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
|
|
517
|
+
|
|
518
|
+
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
|
|
522
|
+
|
|
523
|
+
|
|
524
|
+
|
|
525
|
+
|
|
526
|
+
|
|
527
|
+
|
|
528
|
+
|
|
529
|
+
|
|
530
|
+
|
|
531
|
+
|
|
532
|
+
|
|
533
|
+
|
|
534
|
+
|
|
535
|
+
|
|
536
|
+
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
|
|
540
|
+
|
|
541
|
+
|
|
542
|
+
|
|
543
|
+
|
|
544
|
+
|
|
545
|
+
|
|
546
|
+
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
|
|
550
|
+
|
|
551
|
+
|
|
552
|
+
|
|
553
|
+
|
|
554
|
+
|
|
555
|
+
|
|
556
|
+
|
|
557
|
+
|
|
558
|
+
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
|
|
565
|
+
|
|
566
|
+
|
|
567
|
+
|
|
568
|
+
|
|
569
|
+
|
|
570
|
+
|
|
571
|
+
|
|
572
|
+
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
|
|
576
|
+
|
|
577
|
+
|
|
578
|
+
|
|
579
|
+
|
|
580
|
+
|
|
581
|
+
|
|
582
|
+
|
|
583
|
+
|
|
584
|
+
|
|
585
|
+
|
|
586
|
+
|
|
587
|
+
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
|
|
591
|
+
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
|
|
595
|
+
|
|
596
|
+
|
|
597
|
+
|
|
598
|
+
|
|
599
|
+
|
|
600
|
+
|
|
601
|
+
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
|
|
605
|
+
|
|
606
|
+
|
|
607
|
+
|
|
608
|
+
|
|
609
|
+
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
|
|
613
|
+
|
|
614
|
+
|
|
615
|
+
|
|
616
|
+
|
|
617
|
+
|
|
618
|
+
|
|
619
|
+
|
|
620
|
+
|
|
621
|
+
|
|
622
|
+
|
|
623
|
+
|
|
624
|
+
|
|
625
|
+
|
|
626
|
+
|
|
627
|
+
|
|
628
|
+
|
|
629
|
+
|
|
630
|
+
|
|
631
|
+
|
|
632
|
+
|
|
633
|
+
|
|
634
|
+
|
|
635
|
+
|
|
636
|
+
|
|
637
|
+
|
|
638
|
+
|
|
639
|
+
|
|
640
|
+
|
|
641
|
+
|
|
642
|
+
|
|
643
|
+
|
|
644
|
+
|
|
645
|
+
|
|
646
|
+
|
|
647
|
+
|
|
648
|
+
|
|
649
|
+
|
|
650
|
+
|
|
651
|
+
|
|
652
|
+
|
|
653
|
+
|
|
654
|
+
|
|
655
|
+
|
|
656
|
+
|
|
657
|
+
|
|
658
|
+
|
|
659
|
+
|
|
660
|
+
* @example
|
|
661
|
+
* // Check key existence
|
|
662
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
663
|
+
* mm.add(1, 'a');
|
|
664
|
+
* console.log(mm.has(1)); // true;
|
|
665
|
+
* console.log(mm.has(2)); // false;
|
|
666
|
+
*/
|
|
667
|
+
has(key: K): boolean;
|
|
668
|
+
/**
|
|
669
|
+
* Live bucket reference (do not auto-delete key if bucket becomes empty via mutation).
|
|
670
|
+
* @remarks Time O(log n), Space O(1)
|
|
671
|
+
|
|
672
|
+
|
|
673
|
+
|
|
674
|
+
|
|
675
|
+
|
|
676
|
+
|
|
677
|
+
|
|
678
|
+
|
|
679
|
+
|
|
680
|
+
|
|
681
|
+
|
|
682
|
+
|
|
683
|
+
|
|
684
|
+
|
|
685
|
+
|
|
686
|
+
|
|
687
|
+
|
|
688
|
+
|
|
689
|
+
|
|
690
|
+
|
|
691
|
+
|
|
692
|
+
|
|
693
|
+
|
|
694
|
+
|
|
695
|
+
|
|
696
|
+
|
|
697
|
+
|
|
698
|
+
|
|
699
|
+
|
|
700
|
+
|
|
701
|
+
|
|
702
|
+
|
|
703
|
+
|
|
704
|
+
|
|
705
|
+
|
|
706
|
+
|
|
707
|
+
|
|
708
|
+
|
|
709
|
+
|
|
710
|
+
|
|
711
|
+
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
|
|
715
|
+
|
|
716
|
+
|
|
717
|
+
|
|
718
|
+
|
|
719
|
+
|
|
720
|
+
|
|
721
|
+
|
|
722
|
+
|
|
723
|
+
|
|
724
|
+
|
|
725
|
+
|
|
726
|
+
|
|
727
|
+
|
|
728
|
+
|
|
729
|
+
|
|
730
|
+
|
|
731
|
+
|
|
732
|
+
|
|
733
|
+
|
|
734
|
+
|
|
735
|
+
|
|
736
|
+
|
|
737
|
+
|
|
738
|
+
|
|
739
|
+
|
|
740
|
+
|
|
741
|
+
|
|
742
|
+
|
|
743
|
+
|
|
744
|
+
|
|
745
|
+
|
|
746
|
+
|
|
747
|
+
|
|
748
|
+
|
|
749
|
+
|
|
750
|
+
|
|
751
|
+
|
|
752
|
+
|
|
753
|
+
|
|
754
|
+
|
|
755
|
+
|
|
756
|
+
|
|
757
|
+
|
|
758
|
+
|
|
759
|
+
|
|
760
|
+
|
|
761
|
+
|
|
762
|
+
|
|
763
|
+
|
|
764
|
+
|
|
765
|
+
|
|
766
|
+
|
|
767
|
+
|
|
768
|
+
|
|
769
|
+
|
|
770
|
+
|
|
771
|
+
|
|
772
|
+
|
|
773
|
+
|
|
774
|
+
|
|
775
|
+
|
|
776
|
+
|
|
777
|
+
|
|
778
|
+
|
|
779
|
+
|
|
780
|
+
|
|
781
|
+
|
|
782
|
+
|
|
783
|
+
|
|
784
|
+
|
|
785
|
+
|
|
786
|
+
|
|
787
|
+
|
|
788
|
+
|
|
789
|
+
|
|
790
|
+
|
|
791
|
+
|
|
792
|
+
|
|
793
|
+
|
|
794
|
+
|
|
795
|
+
|
|
796
|
+
|
|
797
|
+
|
|
798
|
+
|
|
799
|
+
|
|
800
|
+
|
|
801
|
+
|
|
802
|
+
|
|
803
|
+
|
|
804
|
+
|
|
805
|
+
|
|
806
|
+
|
|
807
|
+
|
|
808
|
+
|
|
809
|
+
|
|
810
|
+
|
|
811
|
+
|
|
812
|
+
|
|
813
|
+
|
|
814
|
+
|
|
815
|
+
|
|
816
|
+
|
|
817
|
+
|
|
818
|
+
|
|
819
|
+
|
|
820
|
+
|
|
821
|
+
|
|
822
|
+
|
|
823
|
+
|
|
824
|
+
|
|
825
|
+
|
|
826
|
+
|
|
827
|
+
|
|
828
|
+
|
|
829
|
+
|
|
830
|
+
|
|
831
|
+
|
|
832
|
+
|
|
833
|
+
|
|
834
|
+
|
|
835
|
+
|
|
836
|
+
|
|
837
|
+
|
|
838
|
+
|
|
839
|
+
|
|
840
|
+
|
|
841
|
+
|
|
842
|
+
|
|
843
|
+
|
|
844
|
+
|
|
845
|
+
|
|
846
|
+
|
|
847
|
+
|
|
848
|
+
|
|
849
|
+
|
|
850
|
+
|
|
851
|
+
|
|
852
|
+
|
|
853
|
+
|
|
854
|
+
|
|
855
|
+
|
|
856
|
+
|
|
857
|
+
|
|
858
|
+
|
|
859
|
+
|
|
860
|
+
|
|
861
|
+
|
|
862
|
+
|
|
863
|
+
|
|
864
|
+
|
|
865
|
+
|
|
866
|
+
|
|
867
|
+
* @example
|
|
868
|
+
* // Get values for key
|
|
869
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
870
|
+
* mm.add(1, 'a');
|
|
871
|
+
* mm.add(1, 'b');
|
|
872
|
+
* console.log(mm.get(1)); // ['a', 'b'];
|
|
873
|
+
*/
|
|
874
|
+
get(key: K): V[] | undefined;
|
|
875
|
+
/**
|
|
876
|
+
* Append a single value.
|
|
877
|
+
* @remarks Time O(log n), Space O(1)
|
|
878
|
+
|
|
879
|
+
|
|
880
|
+
|
|
881
|
+
|
|
882
|
+
|
|
883
|
+
|
|
884
|
+
|
|
885
|
+
|
|
886
|
+
|
|
887
|
+
|
|
888
|
+
|
|
889
|
+
|
|
890
|
+
|
|
891
|
+
|
|
892
|
+
|
|
893
|
+
|
|
894
|
+
|
|
895
|
+
|
|
896
|
+
|
|
897
|
+
|
|
898
|
+
|
|
899
|
+
|
|
900
|
+
|
|
901
|
+
|
|
902
|
+
|
|
903
|
+
|
|
904
|
+
|
|
905
|
+
|
|
906
|
+
|
|
907
|
+
|
|
908
|
+
|
|
909
|
+
|
|
910
|
+
|
|
911
|
+
|
|
912
|
+
|
|
913
|
+
|
|
914
|
+
|
|
915
|
+
|
|
916
|
+
|
|
917
|
+
|
|
918
|
+
|
|
919
|
+
|
|
920
|
+
|
|
921
|
+
|
|
922
|
+
|
|
923
|
+
|
|
924
|
+
|
|
925
|
+
|
|
926
|
+
|
|
927
|
+
|
|
928
|
+
|
|
929
|
+
|
|
930
|
+
|
|
931
|
+
|
|
932
|
+
|
|
933
|
+
|
|
934
|
+
|
|
935
|
+
|
|
936
|
+
|
|
937
|
+
|
|
938
|
+
|
|
939
|
+
|
|
940
|
+
|
|
941
|
+
|
|
942
|
+
|
|
943
|
+
|
|
944
|
+
|
|
945
|
+
|
|
946
|
+
|
|
947
|
+
|
|
948
|
+
|
|
949
|
+
|
|
950
|
+
|
|
951
|
+
|
|
952
|
+
|
|
953
|
+
|
|
954
|
+
|
|
955
|
+
|
|
956
|
+
|
|
957
|
+
|
|
958
|
+
|
|
959
|
+
|
|
960
|
+
|
|
961
|
+
|
|
962
|
+
|
|
963
|
+
|
|
964
|
+
|
|
965
|
+
|
|
966
|
+
|
|
967
|
+
|
|
968
|
+
|
|
969
|
+
|
|
970
|
+
|
|
971
|
+
|
|
972
|
+
|
|
973
|
+
|
|
974
|
+
|
|
975
|
+
|
|
976
|
+
|
|
977
|
+
|
|
978
|
+
|
|
979
|
+
|
|
980
|
+
|
|
981
|
+
|
|
982
|
+
|
|
983
|
+
|
|
984
|
+
|
|
985
|
+
|
|
986
|
+
|
|
987
|
+
|
|
988
|
+
|
|
989
|
+
|
|
990
|
+
|
|
991
|
+
|
|
992
|
+
|
|
993
|
+
|
|
994
|
+
|
|
995
|
+
|
|
996
|
+
|
|
997
|
+
|
|
998
|
+
|
|
999
|
+
|
|
1000
|
+
|
|
1001
|
+
|
|
1002
|
+
|
|
1003
|
+
|
|
1004
|
+
|
|
1005
|
+
|
|
1006
|
+
|
|
1007
|
+
|
|
1008
|
+
|
|
1009
|
+
|
|
1010
|
+
|
|
1011
|
+
|
|
1012
|
+
|
|
1013
|
+
|
|
1014
|
+
|
|
1015
|
+
|
|
1016
|
+
|
|
1017
|
+
|
|
1018
|
+
|
|
1019
|
+
|
|
1020
|
+
|
|
1021
|
+
|
|
1022
|
+
|
|
1023
|
+
|
|
1024
|
+
|
|
1025
|
+
|
|
1026
|
+
|
|
1027
|
+
|
|
1028
|
+
|
|
1029
|
+
|
|
1030
|
+
* @example
|
|
1031
|
+
* // Add key-value pair
|
|
1032
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
1033
|
+
* mm.add(1, 'a');
|
|
1034
|
+
* mm.add(1, 'b');
|
|
1035
|
+
* mm.add(2, 'c');
|
|
1036
|
+
* console.log(mm.get(1)); // ['a', 'b'];
|
|
1037
|
+
*/
|
|
1038
|
+
add(key: K, value: V): boolean;
|
|
1039
|
+
/**
|
|
1040
|
+
* Alias for compatibility with existing TreeMultiMap semantics.
|
|
1041
|
+
* @remarks Time O(log n), Space O(1) for single value; O(log n + m) for bucket append
|
|
1042
|
+
|
|
1043
|
+
|
|
1044
|
+
|
|
1045
|
+
|
|
1046
|
+
|
|
1047
|
+
|
|
1048
|
+
|
|
1049
|
+
|
|
1050
|
+
|
|
1051
|
+
|
|
1052
|
+
|
|
1053
|
+
|
|
1054
|
+
|
|
1055
|
+
|
|
1056
|
+
|
|
1057
|
+
|
|
1058
|
+
|
|
1059
|
+
|
|
1060
|
+
|
|
1061
|
+
|
|
1062
|
+
|
|
1063
|
+
|
|
1064
|
+
|
|
1065
|
+
|
|
1066
|
+
|
|
1067
|
+
|
|
1068
|
+
|
|
1069
|
+
|
|
1070
|
+
|
|
1071
|
+
|
|
1072
|
+
|
|
1073
|
+
|
|
1074
|
+
|
|
1075
|
+
|
|
1076
|
+
|
|
1077
|
+
|
|
1078
|
+
|
|
1079
|
+
|
|
1080
|
+
|
|
1081
|
+
|
|
1082
|
+
|
|
1083
|
+
|
|
1084
|
+
|
|
1085
|
+
|
|
1086
|
+
|
|
1087
|
+
|
|
1088
|
+
|
|
1089
|
+
|
|
1090
|
+
|
|
1091
|
+
|
|
1092
|
+
|
|
1093
|
+
|
|
1094
|
+
|
|
1095
|
+
|
|
1096
|
+
|
|
1097
|
+
|
|
1098
|
+
|
|
1099
|
+
|
|
1100
|
+
|
|
1101
|
+
|
|
1102
|
+
|
|
1103
|
+
|
|
1104
|
+
|
|
1105
|
+
|
|
1106
|
+
|
|
1107
|
+
|
|
1108
|
+
|
|
1109
|
+
|
|
1110
|
+
|
|
1111
|
+
|
|
1112
|
+
|
|
1113
|
+
|
|
1114
|
+
|
|
1115
|
+
|
|
1116
|
+
|
|
1117
|
+
|
|
1118
|
+
|
|
1119
|
+
|
|
1120
|
+
|
|
1121
|
+
|
|
1122
|
+
|
|
1123
|
+
|
|
1124
|
+
|
|
1125
|
+
|
|
1126
|
+
|
|
1127
|
+
|
|
1128
|
+
|
|
1129
|
+
|
|
1130
|
+
|
|
1131
|
+
|
|
1132
|
+
|
|
1133
|
+
|
|
1134
|
+
|
|
1135
|
+
|
|
1136
|
+
|
|
1137
|
+
|
|
1138
|
+
|
|
1139
|
+
|
|
1140
|
+
|
|
1141
|
+
|
|
1142
|
+
|
|
1143
|
+
|
|
1144
|
+
|
|
1145
|
+
|
|
1146
|
+
|
|
1147
|
+
|
|
1148
|
+
|
|
1149
|
+
|
|
1150
|
+
|
|
1151
|
+
|
|
1152
|
+
|
|
1153
|
+
|
|
1154
|
+
|
|
1155
|
+
|
|
1156
|
+
|
|
1157
|
+
|
|
1158
|
+
|
|
1159
|
+
|
|
1160
|
+
|
|
1161
|
+
|
|
1162
|
+
|
|
1163
|
+
|
|
1164
|
+
|
|
1165
|
+
|
|
1166
|
+
|
|
1167
|
+
|
|
1168
|
+
|
|
1169
|
+
|
|
1170
|
+
|
|
1171
|
+
|
|
1172
|
+
|
|
1173
|
+
|
|
1174
|
+
|
|
1175
|
+
|
|
1176
|
+
|
|
1177
|
+
|
|
1178
|
+
|
|
1179
|
+
|
|
1180
|
+
|
|
1181
|
+
|
|
1182
|
+
|
|
1183
|
+
|
|
1184
|
+
|
|
1185
|
+
|
|
1186
|
+
|
|
1187
|
+
|
|
1188
|
+
|
|
1189
|
+
|
|
1190
|
+
|
|
1191
|
+
|
|
1192
|
+
|
|
1193
|
+
|
|
1194
|
+
|
|
1195
|
+
|
|
1196
|
+
|
|
1197
|
+
|
|
1198
|
+
|
|
1199
|
+
|
|
1200
|
+
|
|
1201
|
+
|
|
1202
|
+
|
|
1203
|
+
|
|
1204
|
+
|
|
1205
|
+
|
|
1206
|
+
|
|
1207
|
+
|
|
1208
|
+
|
|
1209
|
+
|
|
1210
|
+
|
|
1211
|
+
|
|
1212
|
+
|
|
1213
|
+
|
|
1214
|
+
|
|
1215
|
+
|
|
1216
|
+
|
|
1217
|
+
|
|
1218
|
+
|
|
1219
|
+
|
|
1220
|
+
|
|
1221
|
+
|
|
1222
|
+
|
|
1223
|
+
|
|
1224
|
+
|
|
1225
|
+
|
|
1226
|
+
|
|
1227
|
+
|
|
1228
|
+
|
|
1229
|
+
|
|
1230
|
+
|
|
1231
|
+
|
|
1232
|
+
|
|
1233
|
+
|
|
1234
|
+
|
|
1235
|
+
|
|
1236
|
+
* @example
|
|
1237
|
+
* // Set values for key
|
|
1238
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
1239
|
+
* mm.set(1, 'a');
|
|
1240
|
+
* mm.set(1, 'b');
|
|
1241
|
+
* console.log(mm.get(1)); // ['a', 'b'];
|
|
1242
|
+
*/
|
|
1243
|
+
set(entry: [K | null | undefined, V[] | undefined] | K | null | undefined, value?: V): boolean;
|
|
1244
|
+
set(key: K, value: V): boolean;
|
|
1245
|
+
/**
|
|
1246
|
+
* Deletes a key and its entire bucket.
|
|
1247
|
+
* @remarks Time O(log n), Space O(1)
|
|
1248
|
+
|
|
1249
|
+
|
|
1250
|
+
|
|
1251
|
+
|
|
1252
|
+
|
|
1253
|
+
|
|
1254
|
+
|
|
1255
|
+
|
|
1256
|
+
|
|
1257
|
+
|
|
1258
|
+
|
|
1259
|
+
|
|
1260
|
+
|
|
1261
|
+
|
|
1262
|
+
|
|
1263
|
+
|
|
1264
|
+
|
|
1265
|
+
|
|
1266
|
+
|
|
1267
|
+
|
|
1268
|
+
|
|
1269
|
+
|
|
1270
|
+
|
|
1271
|
+
|
|
1272
|
+
|
|
1273
|
+
|
|
1274
|
+
|
|
1275
|
+
|
|
1276
|
+
|
|
1277
|
+
|
|
1278
|
+
|
|
1279
|
+
|
|
1280
|
+
|
|
1281
|
+
|
|
1282
|
+
|
|
1283
|
+
|
|
1284
|
+
|
|
1285
|
+
|
|
1286
|
+
|
|
1287
|
+
|
|
1288
|
+
|
|
1289
|
+
|
|
1290
|
+
|
|
1291
|
+
|
|
1292
|
+
|
|
1293
|
+
|
|
1294
|
+
|
|
1295
|
+
|
|
1296
|
+
|
|
1297
|
+
|
|
1298
|
+
|
|
1299
|
+
|
|
1300
|
+
|
|
1301
|
+
|
|
1302
|
+
|
|
1303
|
+
|
|
1304
|
+
|
|
1305
|
+
|
|
1306
|
+
|
|
1307
|
+
|
|
1308
|
+
|
|
1309
|
+
|
|
1310
|
+
|
|
1311
|
+
|
|
1312
|
+
|
|
1313
|
+
|
|
1314
|
+
|
|
1315
|
+
|
|
1316
|
+
|
|
1317
|
+
|
|
1318
|
+
|
|
1319
|
+
|
|
1320
|
+
|
|
1321
|
+
|
|
1322
|
+
|
|
1323
|
+
|
|
1324
|
+
|
|
1325
|
+
|
|
1326
|
+
|
|
1327
|
+
|
|
1328
|
+
|
|
1329
|
+
|
|
1330
|
+
|
|
1331
|
+
|
|
1332
|
+
|
|
1333
|
+
|
|
1334
|
+
|
|
1335
|
+
|
|
1336
|
+
|
|
1337
|
+
|
|
1338
|
+
|
|
1339
|
+
|
|
1340
|
+
|
|
1341
|
+
|
|
1342
|
+
|
|
1343
|
+
|
|
1344
|
+
|
|
1345
|
+
|
|
1346
|
+
|
|
1347
|
+
|
|
1348
|
+
|
|
1349
|
+
|
|
1350
|
+
|
|
1351
|
+
|
|
1352
|
+
|
|
1353
|
+
|
|
1354
|
+
|
|
1355
|
+
|
|
1356
|
+
|
|
1357
|
+
|
|
1358
|
+
|
|
1359
|
+
|
|
1360
|
+
|
|
1361
|
+
|
|
1362
|
+
|
|
1363
|
+
|
|
1364
|
+
|
|
1365
|
+
|
|
1366
|
+
|
|
1367
|
+
|
|
1368
|
+
|
|
1369
|
+
|
|
1370
|
+
|
|
1371
|
+
|
|
1372
|
+
|
|
1373
|
+
|
|
1374
|
+
|
|
1375
|
+
|
|
1376
|
+
|
|
1377
|
+
|
|
1378
|
+
|
|
1379
|
+
|
|
1380
|
+
|
|
1381
|
+
|
|
1382
|
+
|
|
1383
|
+
|
|
1384
|
+
|
|
1385
|
+
|
|
1386
|
+
|
|
1387
|
+
|
|
1388
|
+
|
|
1389
|
+
|
|
1390
|
+
|
|
1391
|
+
|
|
1392
|
+
|
|
1393
|
+
|
|
1394
|
+
|
|
1395
|
+
|
|
1396
|
+
|
|
1397
|
+
|
|
1398
|
+
|
|
1399
|
+
|
|
1400
|
+
|
|
1401
|
+
|
|
1402
|
+
|
|
1403
|
+
|
|
1404
|
+
|
|
1405
|
+
|
|
1406
|
+
|
|
1407
|
+
|
|
1408
|
+
|
|
1409
|
+
|
|
1410
|
+
|
|
1411
|
+
|
|
1412
|
+
|
|
1413
|
+
|
|
1414
|
+
|
|
1415
|
+
|
|
1416
|
+
|
|
1417
|
+
|
|
1418
|
+
|
|
1419
|
+
|
|
1420
|
+
|
|
1421
|
+
|
|
1422
|
+
|
|
1423
|
+
|
|
1424
|
+
|
|
1425
|
+
|
|
1426
|
+
|
|
1427
|
+
|
|
1428
|
+
|
|
1429
|
+
|
|
1430
|
+
|
|
1431
|
+
|
|
1432
|
+
|
|
1433
|
+
|
|
1434
|
+
|
|
1435
|
+
|
|
1436
|
+
|
|
1437
|
+
|
|
1438
|
+
|
|
1439
|
+
|
|
1440
|
+
|
|
1441
|
+
|
|
1442
|
+
|
|
1443
|
+
|
|
1444
|
+
* @example
|
|
1445
|
+
* // Remove key
|
|
1446
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
1447
|
+
* mm.add(1, 'a');
|
|
1448
|
+
* mm.add(2, 'b');
|
|
1449
|
+
* mm.delete(1);
|
|
1450
|
+
* console.log(mm.has(1)); // false;
|
|
1451
|
+
*/
|
|
1452
|
+
delete(key: K): boolean;
|
|
1453
|
+
/**
|
|
1454
|
+
* Check if a specific value exists in a key's bucket.
|
|
1455
|
+
* @remarks Time O(log n + m), Space O(1) where m is bucket size
|
|
1456
|
+
|
|
1457
|
+
|
|
1458
|
+
|
|
1459
|
+
|
|
1460
|
+
|
|
1461
|
+
|
|
1462
|
+
|
|
1463
|
+
|
|
1464
|
+
|
|
1465
|
+
|
|
1466
|
+
|
|
1467
|
+
|
|
1468
|
+
|
|
1469
|
+
|
|
1470
|
+
|
|
1471
|
+
|
|
1472
|
+
|
|
1473
|
+
|
|
1474
|
+
|
|
1475
|
+
|
|
1476
|
+
|
|
1477
|
+
|
|
1478
|
+
|
|
1479
|
+
|
|
1480
|
+
|
|
1481
|
+
|
|
1482
|
+
* @example
|
|
1483
|
+
* // Check specific key-value
|
|
1484
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
1485
|
+
* mm.add(1, 'a');
|
|
1486
|
+
* console.log(mm.hasEntry(1, 'a')); // true;
|
|
1487
|
+
* console.log(mm.hasEntry(1, 'z')); // false;
|
|
1488
|
+
*/
|
|
1489
|
+
hasEntry(key: K, value: V, eq?: (a: V, b: V) => boolean): boolean;
|
|
1490
|
+
/**
|
|
1491
|
+
* Delete a single occurrence of a value from a key's bucket.
|
|
1492
|
+
* @remarks Time O(log n + m), Space O(1) where m is bucket size
|
|
1493
|
+
|
|
1494
|
+
|
|
1495
|
+
|
|
1496
|
+
|
|
1497
|
+
|
|
1498
|
+
|
|
1499
|
+
|
|
1500
|
+
|
|
1501
|
+
|
|
1502
|
+
|
|
1503
|
+
|
|
1504
|
+
|
|
1505
|
+
|
|
1506
|
+
|
|
1507
|
+
|
|
1508
|
+
|
|
1509
|
+
|
|
1510
|
+
|
|
1511
|
+
|
|
1512
|
+
|
|
1513
|
+
|
|
1514
|
+
|
|
1515
|
+
|
|
1516
|
+
|
|
1517
|
+
|
|
1518
|
+
|
|
1519
|
+
* @example
|
|
1520
|
+
* // Delete specific value
|
|
1521
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
1522
|
+
* mm.add(1, 'a');
|
|
1523
|
+
* mm.add(1, 'b');
|
|
1524
|
+
* mm.deleteValue(1, 'a');
|
|
1525
|
+
* console.log(mm.get(1)); // ['b'];
|
|
1526
|
+
*/
|
|
1527
|
+
deleteValue(key: K, value: V, eq?: (a: V, b: V) => boolean): boolean;
|
|
1528
|
+
/**
|
|
1529
|
+
* Delete all occurrences of a value from a key's bucket.
|
|
1530
|
+
* @remarks Time O(log n + m), Space O(1) where m is bucket size
|
|
1531
|
+
|
|
1532
|
+
|
|
1533
|
+
|
|
1534
|
+
|
|
1535
|
+
|
|
1536
|
+
|
|
1537
|
+
|
|
1538
|
+
|
|
1539
|
+
|
|
1540
|
+
|
|
1541
|
+
|
|
1542
|
+
|
|
1543
|
+
|
|
1544
|
+
|
|
1545
|
+
|
|
1546
|
+
|
|
1547
|
+
|
|
1548
|
+
|
|
1549
|
+
|
|
1550
|
+
|
|
1551
|
+
|
|
1552
|
+
|
|
1553
|
+
|
|
1554
|
+
|
|
1555
|
+
|
|
1556
|
+
|
|
1557
|
+
* @example
|
|
1558
|
+
* // Delete all matching values
|
|
1559
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
1560
|
+
* mm.add(1, 'a');
|
|
1561
|
+
* mm.add(1, 'a');
|
|
1562
|
+
* mm.add(1, 'b');
|
|
1563
|
+
* const count = mm.deleteValues(1, 'a');
|
|
1564
|
+
* console.log(count); // 2;
|
|
1565
|
+
*/
|
|
1566
|
+
deleteValues(key: K, value: V, eq?: (a: V, b: V) => boolean): number;
|
|
1567
|
+
/**
|
|
1568
|
+
* Iterates over all entries as [key, bucket] pairs.
|
|
1569
|
+
* @remarks Time O(n), Space O(1)
|
|
1570
|
+
*/
|
|
1571
|
+
[Symbol.iterator](): Iterator<[K, V[]]>;
|
|
1572
|
+
/**
|
|
1573
|
+
* Iterates over all keys.
|
|
1574
|
+
* @remarks Time O(n), Space O(1)
|
|
1575
|
+
|
|
1576
|
+
|
|
1577
|
+
|
|
1578
|
+
|
|
1579
|
+
|
|
1580
|
+
|
|
1581
|
+
|
|
1582
|
+
|
|
1583
|
+
|
|
1584
|
+
|
|
1585
|
+
|
|
1586
|
+
|
|
1587
|
+
|
|
1588
|
+
|
|
1589
|
+
|
|
1590
|
+
|
|
1591
|
+
|
|
1592
|
+
|
|
1593
|
+
|
|
1594
|
+
|
|
1595
|
+
|
|
1596
|
+
|
|
1597
|
+
|
|
1598
|
+
|
|
1599
|
+
|
|
1600
|
+
|
|
1601
|
+
|
|
1602
|
+
|
|
1603
|
+
|
|
1604
|
+
|
|
1605
|
+
|
|
1606
|
+
|
|
1607
|
+
|
|
1608
|
+
|
|
1609
|
+
|
|
1610
|
+
|
|
1611
|
+
|
|
1612
|
+
|
|
1613
|
+
|
|
1614
|
+
|
|
1615
|
+
|
|
1616
|
+
|
|
1617
|
+
|
|
1618
|
+
|
|
1619
|
+
|
|
1620
|
+
|
|
1621
|
+
|
|
1622
|
+
|
|
1623
|
+
|
|
1624
|
+
|
|
1625
|
+
|
|
1626
|
+
|
|
1627
|
+
|
|
1628
|
+
|
|
1629
|
+
|
|
1630
|
+
|
|
1631
|
+
|
|
1632
|
+
|
|
1633
|
+
|
|
1634
|
+
|
|
1635
|
+
|
|
1636
|
+
|
|
1637
|
+
|
|
1638
|
+
|
|
1639
|
+
|
|
1640
|
+
|
|
1641
|
+
|
|
1642
|
+
|
|
1643
|
+
|
|
1644
|
+
|
|
1645
|
+
|
|
1646
|
+
|
|
1647
|
+
|
|
1648
|
+
|
|
1649
|
+
|
|
1650
|
+
|
|
1651
|
+
|
|
1652
|
+
|
|
1653
|
+
|
|
1654
|
+
|
|
1655
|
+
|
|
1656
|
+
|
|
1657
|
+
|
|
1658
|
+
|
|
1659
|
+
|
|
1660
|
+
|
|
1661
|
+
|
|
1662
|
+
|
|
1663
|
+
|
|
1664
|
+
|
|
1665
|
+
|
|
1666
|
+
|
|
1667
|
+
|
|
1668
|
+
|
|
1669
|
+
|
|
1670
|
+
|
|
1671
|
+
|
|
1672
|
+
|
|
1673
|
+
|
|
1674
|
+
|
|
1675
|
+
|
|
1676
|
+
|
|
1677
|
+
|
|
1678
|
+
|
|
1679
|
+
|
|
1680
|
+
|
|
1681
|
+
|
|
1682
|
+
|
|
1683
|
+
|
|
1684
|
+
|
|
1685
|
+
|
|
1686
|
+
|
|
1687
|
+
|
|
1688
|
+
|
|
1689
|
+
|
|
1690
|
+
|
|
1691
|
+
|
|
1692
|
+
|
|
1693
|
+
|
|
1694
|
+
|
|
1695
|
+
|
|
1696
|
+
|
|
1697
|
+
|
|
1698
|
+
|
|
1699
|
+
|
|
1700
|
+
|
|
1701
|
+
|
|
1702
|
+
|
|
1703
|
+
|
|
1704
|
+
|
|
1705
|
+
|
|
1706
|
+
|
|
1707
|
+
|
|
1708
|
+
|
|
1709
|
+
|
|
1710
|
+
|
|
1711
|
+
|
|
1712
|
+
|
|
1713
|
+
|
|
1714
|
+
|
|
1715
|
+
|
|
1716
|
+
|
|
1717
|
+
|
|
1718
|
+
|
|
1719
|
+
|
|
1720
|
+
|
|
1721
|
+
|
|
1722
|
+
|
|
1723
|
+
|
|
1724
|
+
|
|
1725
|
+
|
|
1726
|
+
|
|
1727
|
+
|
|
1728
|
+
|
|
1729
|
+
|
|
1730
|
+
|
|
1731
|
+
|
|
1732
|
+
|
|
1733
|
+
* @example
|
|
1734
|
+
* // Iterate keys
|
|
1735
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
1736
|
+
* mm.add(3, 'c');
|
|
1737
|
+
* mm.add(1, 'a');
|
|
1738
|
+
* console.log([...mm.keys()]); // [1, 3];
|
|
1739
|
+
*/
|
|
1740
|
+
keys(): IterableIterator<K>;
|
|
1741
|
+
/**
|
|
1742
|
+
* Iterates over all buckets.
|
|
1743
|
+
* @remarks Time O(n), Space O(1)
|
|
1744
|
+
|
|
1745
|
+
|
|
1746
|
+
|
|
1747
|
+
|
|
1748
|
+
|
|
1749
|
+
|
|
1750
|
+
|
|
1751
|
+
|
|
1752
|
+
|
|
1753
|
+
|
|
1754
|
+
|
|
1755
|
+
|
|
1756
|
+
|
|
1757
|
+
|
|
1758
|
+
|
|
1759
|
+
|
|
1760
|
+
|
|
1761
|
+
|
|
1762
|
+
|
|
1763
|
+
|
|
1764
|
+
|
|
1765
|
+
|
|
1766
|
+
|
|
1767
|
+
|
|
1768
|
+
|
|
1769
|
+
|
|
1770
|
+
|
|
1771
|
+
|
|
1772
|
+
|
|
1773
|
+
|
|
1774
|
+
|
|
1775
|
+
|
|
1776
|
+
|
|
1777
|
+
|
|
1778
|
+
|
|
1779
|
+
|
|
1780
|
+
|
|
1781
|
+
|
|
1782
|
+
|
|
1783
|
+
|
|
1784
|
+
|
|
1785
|
+
|
|
1786
|
+
|
|
1787
|
+
|
|
1788
|
+
|
|
1789
|
+
|
|
1790
|
+
|
|
1791
|
+
|
|
1792
|
+
|
|
1793
|
+
|
|
1794
|
+
|
|
1795
|
+
|
|
1796
|
+
|
|
1797
|
+
|
|
1798
|
+
|
|
1799
|
+
|
|
1800
|
+
|
|
1801
|
+
|
|
1802
|
+
|
|
1803
|
+
|
|
1804
|
+
|
|
1805
|
+
|
|
1806
|
+
|
|
1807
|
+
|
|
1808
|
+
|
|
1809
|
+
|
|
1810
|
+
|
|
1811
|
+
|
|
1812
|
+
|
|
1813
|
+
|
|
1814
|
+
|
|
1815
|
+
|
|
1816
|
+
|
|
1817
|
+
|
|
1818
|
+
|
|
1819
|
+
|
|
1820
|
+
|
|
1821
|
+
|
|
1822
|
+
|
|
1823
|
+
|
|
1824
|
+
|
|
1825
|
+
|
|
1826
|
+
|
|
1827
|
+
|
|
1828
|
+
|
|
1829
|
+
|
|
1830
|
+
|
|
1831
|
+
|
|
1832
|
+
|
|
1833
|
+
|
|
1834
|
+
|
|
1835
|
+
|
|
1836
|
+
|
|
1837
|
+
|
|
1838
|
+
|
|
1839
|
+
|
|
1840
|
+
|
|
1841
|
+
|
|
1842
|
+
|
|
1843
|
+
|
|
1844
|
+
|
|
1845
|
+
|
|
1846
|
+
|
|
1847
|
+
|
|
1848
|
+
|
|
1849
|
+
|
|
1850
|
+
|
|
1851
|
+
|
|
1852
|
+
|
|
1853
|
+
|
|
1854
|
+
|
|
1855
|
+
|
|
1856
|
+
|
|
1857
|
+
|
|
1858
|
+
|
|
1859
|
+
|
|
1860
|
+
|
|
1861
|
+
|
|
1862
|
+
|
|
1863
|
+
|
|
1864
|
+
|
|
1865
|
+
|
|
1866
|
+
|
|
1867
|
+
|
|
1868
|
+
|
|
1869
|
+
|
|
1870
|
+
|
|
1871
|
+
|
|
1872
|
+
|
|
1873
|
+
|
|
1874
|
+
|
|
1875
|
+
|
|
1876
|
+
|
|
1877
|
+
|
|
1878
|
+
|
|
1879
|
+
|
|
1880
|
+
|
|
1881
|
+
|
|
1882
|
+
|
|
1883
|
+
|
|
1884
|
+
|
|
1885
|
+
|
|
1886
|
+
|
|
1887
|
+
|
|
1888
|
+
|
|
1889
|
+
|
|
1890
|
+
|
|
1891
|
+
|
|
1892
|
+
|
|
1893
|
+
|
|
1894
|
+
|
|
1895
|
+
|
|
1896
|
+
|
|
1897
|
+
|
|
1898
|
+
|
|
1899
|
+
|
|
1900
|
+
|
|
1901
|
+
|
|
1902
|
+
* @example
|
|
1903
|
+
* // Iterate value arrays
|
|
1904
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
1905
|
+
* mm.add(1, 'a');
|
|
1906
|
+
* mm.add(1, 'b');
|
|
1907
|
+
* console.log([...mm.values()]); // [['a', 'b']];
|
|
1908
|
+
*/
|
|
1909
|
+
values(): IterableIterator<V[]>;
|
|
1910
|
+
/**
|
|
1911
|
+
* Iterates over all entries for a specific key.
|
|
1912
|
+
* @remarks Time O(log n + m), Space O(1) where m is bucket size
|
|
1913
|
+
|
|
1914
|
+
|
|
1915
|
+
|
|
1916
|
+
|
|
1917
|
+
|
|
1918
|
+
|
|
1919
|
+
|
|
1920
|
+
|
|
1921
|
+
|
|
1922
|
+
|
|
1923
|
+
|
|
1924
|
+
|
|
1925
|
+
|
|
1926
|
+
|
|
1927
|
+
|
|
1928
|
+
|
|
1929
|
+
|
|
1930
|
+
|
|
1931
|
+
|
|
1932
|
+
|
|
1933
|
+
|
|
1934
|
+
|
|
1935
|
+
|
|
1936
|
+
|
|
1937
|
+
|
|
1938
|
+
|
|
1939
|
+
* @example
|
|
1940
|
+
* // Get entries for key
|
|
1941
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
1942
|
+
* mm.add(1, 'a');
|
|
1943
|
+
* mm.add(1, 'b');
|
|
1944
|
+
* console.log([...mm.entriesOf(1)]); // [[1, 'a'], [1, 'b']];
|
|
1945
|
+
*/
|
|
1946
|
+
entriesOf(key: K): IterableIterator<[K, V]>;
|
|
1947
|
+
/**
|
|
1948
|
+
* Iterates over all values for a specific key.
|
|
1949
|
+
* @remarks Time O(log n + m), Space O(1) where m is bucket size
|
|
1950
|
+
|
|
1951
|
+
|
|
1952
|
+
|
|
1953
|
+
|
|
1954
|
+
|
|
1955
|
+
|
|
1956
|
+
|
|
1957
|
+
|
|
1958
|
+
|
|
1959
|
+
|
|
1960
|
+
|
|
1961
|
+
|
|
1962
|
+
|
|
1963
|
+
|
|
1964
|
+
|
|
1965
|
+
|
|
1966
|
+
|
|
1967
|
+
|
|
1968
|
+
|
|
1969
|
+
|
|
1970
|
+
|
|
1971
|
+
|
|
1972
|
+
|
|
1973
|
+
|
|
1974
|
+
|
|
1975
|
+
|
|
1976
|
+
* @example
|
|
1977
|
+
* // Get flat values for key
|
|
1978
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
1979
|
+
* mm.add(1, 'a');
|
|
1980
|
+
* mm.add(1, 'b');
|
|
1981
|
+
* console.log([...mm.valuesOf(1)]); // ['a', 'b'];
|
|
1982
|
+
*/
|
|
1983
|
+
valuesOf(key: K): IterableIterator<V>;
|
|
1984
|
+
/**
|
|
1985
|
+
* Iterates over all [key, value] pairs (flattened from buckets).
|
|
1986
|
+
* @remarks Time O(T), Space O(1) where T is totalSize
|
|
1987
|
+
|
|
1988
|
+
|
|
1989
|
+
|
|
1990
|
+
|
|
1991
|
+
|
|
1992
|
+
|
|
1993
|
+
|
|
1994
|
+
|
|
1995
|
+
|
|
1996
|
+
|
|
1997
|
+
|
|
1998
|
+
|
|
1999
|
+
|
|
2000
|
+
|
|
2001
|
+
|
|
2002
|
+
|
|
2003
|
+
|
|
2004
|
+
|
|
2005
|
+
|
|
2006
|
+
|
|
2007
|
+
|
|
2008
|
+
|
|
2009
|
+
|
|
2010
|
+
|
|
2011
|
+
|
|
2012
|
+
|
|
2013
|
+
* @example
|
|
2014
|
+
* // All key-value pairs flattened
|
|
2015
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
2016
|
+
* mm.add(1, 'a');
|
|
2017
|
+
* mm.add(1, 'b');
|
|
2018
|
+
* mm.add(2, 'c');
|
|
2019
|
+
* console.log([...mm.flatEntries()]); // [[1, 'a'], [1, 'b'], [2, 'c']];
|
|
2020
|
+
*/
|
|
2021
|
+
flatEntries(): IterableIterator<[K, V]>;
|
|
2022
|
+
/**
|
|
2023
|
+
* Returns the entry with the smallest key.
|
|
2024
|
+
* @remarks Time O(log n), Space O(1)
|
|
2025
|
+
|
|
2026
|
+
|
|
2027
|
+
|
|
2028
|
+
|
|
2029
|
+
|
|
2030
|
+
|
|
2031
|
+
|
|
2032
|
+
|
|
2033
|
+
|
|
2034
|
+
|
|
2035
|
+
|
|
2036
|
+
|
|
2037
|
+
|
|
2038
|
+
|
|
2039
|
+
|
|
2040
|
+
|
|
2041
|
+
|
|
2042
|
+
|
|
2043
|
+
|
|
2044
|
+
|
|
2045
|
+
|
|
2046
|
+
|
|
2047
|
+
|
|
2048
|
+
|
|
2049
|
+
|
|
2050
|
+
|
|
2051
|
+
|
|
2052
|
+
|
|
2053
|
+
|
|
2054
|
+
|
|
2055
|
+
|
|
2056
|
+
|
|
2057
|
+
|
|
2058
|
+
|
|
2059
|
+
|
|
2060
|
+
|
|
2061
|
+
|
|
2062
|
+
|
|
2063
|
+
|
|
2064
|
+
|
|
2065
|
+
|
|
2066
|
+
|
|
2067
|
+
|
|
2068
|
+
|
|
2069
|
+
|
|
2070
|
+
|
|
2071
|
+
|
|
2072
|
+
|
|
2073
|
+
|
|
2074
|
+
|
|
2075
|
+
|
|
2076
|
+
|
|
2077
|
+
|
|
2078
|
+
|
|
2079
|
+
|
|
2080
|
+
|
|
2081
|
+
|
|
2082
|
+
|
|
2083
|
+
|
|
2084
|
+
|
|
2085
|
+
|
|
2086
|
+
|
|
2087
|
+
* @example
|
|
2088
|
+
* // First entry
|
|
2089
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
2090
|
+
* mm.add(3, 'c');
|
|
2091
|
+
* mm.add(1, 'a');
|
|
2092
|
+
* console.log(mm.first()?.[0]); // 1;
|
|
2093
|
+
*/
|
|
2094
|
+
first(): [K, V[]] | undefined;
|
|
2095
|
+
/**
|
|
2096
|
+
* Returns the entry with the largest key.
|
|
2097
|
+
* @remarks Time O(log n), Space O(1)
|
|
2098
|
+
|
|
2099
|
+
|
|
2100
|
+
|
|
2101
|
+
|
|
2102
|
+
|
|
2103
|
+
|
|
2104
|
+
|
|
2105
|
+
|
|
2106
|
+
|
|
2107
|
+
|
|
2108
|
+
|
|
2109
|
+
|
|
2110
|
+
|
|
2111
|
+
|
|
2112
|
+
|
|
2113
|
+
|
|
2114
|
+
|
|
2115
|
+
|
|
2116
|
+
|
|
2117
|
+
|
|
2118
|
+
|
|
2119
|
+
|
|
2120
|
+
|
|
2121
|
+
|
|
2122
|
+
|
|
2123
|
+
|
|
2124
|
+
|
|
2125
|
+
|
|
2126
|
+
|
|
2127
|
+
|
|
2128
|
+
|
|
2129
|
+
|
|
2130
|
+
|
|
2131
|
+
|
|
2132
|
+
|
|
2133
|
+
|
|
2134
|
+
|
|
2135
|
+
|
|
2136
|
+
|
|
2137
|
+
|
|
2138
|
+
|
|
2139
|
+
|
|
2140
|
+
|
|
2141
|
+
|
|
2142
|
+
|
|
2143
|
+
|
|
2144
|
+
|
|
2145
|
+
|
|
2146
|
+
|
|
2147
|
+
|
|
2148
|
+
|
|
2149
|
+
|
|
2150
|
+
|
|
2151
|
+
|
|
2152
|
+
|
|
2153
|
+
|
|
2154
|
+
|
|
2155
|
+
|
|
2156
|
+
|
|
2157
|
+
|
|
2158
|
+
|
|
2159
|
+
|
|
2160
|
+
* @example
|
|
2161
|
+
* // Last entry
|
|
2162
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
2163
|
+
* mm.add(1, 'a');
|
|
2164
|
+
* mm.add(3, 'c');
|
|
2165
|
+
* console.log(mm.last()?.[0]); // 3;
|
|
2166
|
+
*/
|
|
2167
|
+
last(): [K, V[]] | undefined;
|
|
2168
|
+
/**
|
|
2169
|
+
* Removes and returns the entry with the smallest key.
|
|
2170
|
+
* @remarks Time O(log n), Space O(1)
|
|
2171
|
+
|
|
2172
|
+
|
|
2173
|
+
|
|
2174
|
+
|
|
2175
|
+
|
|
2176
|
+
|
|
2177
|
+
|
|
2178
|
+
|
|
2179
|
+
|
|
2180
|
+
|
|
2181
|
+
|
|
2182
|
+
|
|
2183
|
+
|
|
2184
|
+
|
|
2185
|
+
|
|
2186
|
+
|
|
2187
|
+
|
|
2188
|
+
|
|
2189
|
+
|
|
2190
|
+
|
|
2191
|
+
|
|
2192
|
+
|
|
2193
|
+
|
|
2194
|
+
|
|
2195
|
+
|
|
2196
|
+
|
|
2197
|
+
|
|
2198
|
+
* @example
|
|
2199
|
+
* // Remove and return first
|
|
2200
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
2201
|
+
* mm.add(2, 'b');
|
|
2202
|
+
* mm.add(1, 'a');
|
|
2203
|
+
* const first = mm.pollFirst();
|
|
2204
|
+
* console.log(first?.[0]); // 1;
|
|
2205
|
+
* console.log(mm.has(1)); // false;
|
|
2206
|
+
*/
|
|
2207
|
+
pollFirst(): [K, V[]] | undefined;
|
|
2208
|
+
/**
|
|
2209
|
+
* Removes and returns the entry with the largest key.
|
|
2210
|
+
* @remarks Time O(log n), Space O(1)
|
|
2211
|
+
|
|
2212
|
+
|
|
2213
|
+
|
|
2214
|
+
|
|
2215
|
+
|
|
2216
|
+
|
|
2217
|
+
|
|
2218
|
+
|
|
2219
|
+
|
|
2220
|
+
|
|
2221
|
+
|
|
2222
|
+
|
|
2223
|
+
|
|
2224
|
+
|
|
2225
|
+
|
|
2226
|
+
|
|
2227
|
+
|
|
2228
|
+
|
|
2229
|
+
|
|
2230
|
+
|
|
2231
|
+
|
|
2232
|
+
|
|
2233
|
+
|
|
2234
|
+
|
|
2235
|
+
|
|
2236
|
+
|
|
2237
|
+
|
|
2238
|
+
* @example
|
|
2239
|
+
* // Remove and return last
|
|
2240
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
2241
|
+
* mm.add(1, 'a');
|
|
2242
|
+
* mm.add(3, 'c');
|
|
2243
|
+
* const last = mm.pollLast();
|
|
2244
|
+
* console.log(last?.[0]); // 3;
|
|
2245
|
+
*/
|
|
2246
|
+
pollLast(): [K, V[]] | undefined;
|
|
2247
|
+
/**
|
|
2248
|
+
* Returns the entry with the smallest key >= given key.
|
|
2249
|
+
* @remarks Time O(log n), Space O(1)
|
|
2250
|
+
|
|
2251
|
+
|
|
2252
|
+
|
|
2253
|
+
|
|
2254
|
+
|
|
2255
|
+
|
|
2256
|
+
|
|
2257
|
+
|
|
2258
|
+
|
|
2259
|
+
|
|
2260
|
+
|
|
2261
|
+
|
|
2262
|
+
|
|
2263
|
+
|
|
2264
|
+
|
|
2265
|
+
|
|
2266
|
+
|
|
2267
|
+
|
|
2268
|
+
|
|
2269
|
+
|
|
2270
|
+
|
|
2271
|
+
|
|
2272
|
+
|
|
2273
|
+
|
|
2274
|
+
|
|
2275
|
+
|
|
2276
|
+
|
|
2277
|
+
|
|
2278
|
+
|
|
2279
|
+
|
|
2280
|
+
|
|
2281
|
+
|
|
2282
|
+
|
|
2283
|
+
|
|
2284
|
+
|
|
2285
|
+
|
|
2286
|
+
|
|
2287
|
+
|
|
2288
|
+
|
|
2289
|
+
|
|
2290
|
+
|
|
2291
|
+
|
|
2292
|
+
|
|
2293
|
+
|
|
2294
|
+
|
|
2295
|
+
|
|
2296
|
+
|
|
2297
|
+
|
|
2298
|
+
|
|
2299
|
+
|
|
2300
|
+
|
|
2301
|
+
|
|
2302
|
+
|
|
2303
|
+
|
|
2304
|
+
|
|
2305
|
+
|
|
2306
|
+
|
|
2307
|
+
|
|
2308
|
+
|
|
2309
|
+
|
|
2310
|
+
|
|
2311
|
+
|
|
2312
|
+
|
|
2313
|
+
|
|
2314
|
+
|
|
2315
|
+
|
|
2316
|
+
|
|
2317
|
+
|
|
2318
|
+
|
|
2319
|
+
|
|
2320
|
+
|
|
2321
|
+
|
|
2322
|
+
|
|
2323
|
+
|
|
2324
|
+
|
|
2325
|
+
|
|
2326
|
+
|
|
2327
|
+
|
|
2328
|
+
|
|
2329
|
+
|
|
2330
|
+
|
|
2331
|
+
|
|
2332
|
+
|
|
2333
|
+
|
|
2334
|
+
|
|
2335
|
+
|
|
2336
|
+
|
|
2337
|
+
|
|
2338
|
+
|
|
2339
|
+
|
|
2340
|
+
|
|
2341
|
+
|
|
2342
|
+
|
|
2343
|
+
|
|
2344
|
+
|
|
2345
|
+
|
|
2346
|
+
|
|
2347
|
+
|
|
2348
|
+
|
|
2349
|
+
|
|
2350
|
+
|
|
2351
|
+
|
|
2352
|
+
|
|
2353
|
+
|
|
2354
|
+
|
|
2355
|
+
|
|
2356
|
+
|
|
2357
|
+
|
|
2358
|
+
|
|
2359
|
+
|
|
2360
|
+
|
|
2361
|
+
|
|
2362
|
+
|
|
2363
|
+
|
|
2364
|
+
|
|
2365
|
+
|
|
2366
|
+
|
|
2367
|
+
|
|
2368
|
+
|
|
2369
|
+
|
|
2370
|
+
|
|
2371
|
+
|
|
2372
|
+
|
|
2373
|
+
|
|
2374
|
+
|
|
2375
|
+
|
|
2376
|
+
|
|
2377
|
+
|
|
2378
|
+
|
|
2379
|
+
|
|
2380
|
+
|
|
2381
|
+
|
|
2382
|
+
|
|
2383
|
+
|
|
2384
|
+
|
|
2385
|
+
|
|
2386
|
+
|
|
2387
|
+
|
|
2388
|
+
|
|
2389
|
+
|
|
2390
|
+
|
|
2391
|
+
|
|
2392
|
+
|
|
2393
|
+
|
|
2394
|
+
|
|
2395
|
+
|
|
2396
|
+
|
|
2397
|
+
|
|
2398
|
+
|
|
2399
|
+
|
|
2400
|
+
|
|
2401
|
+
|
|
2402
|
+
|
|
2403
|
+
|
|
2404
|
+
|
|
2405
|
+
|
|
2406
|
+
|
|
2407
|
+
|
|
2408
|
+
|
|
2409
|
+
|
|
2410
|
+
|
|
2411
|
+
* @example
|
|
2412
|
+
* // Least key ≥ target
|
|
2413
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
2414
|
+
* mm.add(10, 'a');
|
|
2415
|
+
* mm.add(20, 'b');
|
|
2416
|
+
* mm.add(30, 'c');
|
|
2417
|
+
* console.log(mm.ceiling(15)?.[0]); // 20;
|
|
2418
|
+
*/
|
|
2419
|
+
ceiling(key: K): [K, V[]] | undefined;
|
|
2420
|
+
/**
|
|
2421
|
+
* Returns the entry with the largest key <= given key.
|
|
2422
|
+
* @remarks Time O(log n), Space O(1)
|
|
2423
|
+
|
|
2424
|
+
|
|
2425
|
+
|
|
2426
|
+
|
|
2427
|
+
|
|
2428
|
+
|
|
2429
|
+
|
|
2430
|
+
|
|
2431
|
+
|
|
2432
|
+
|
|
2433
|
+
|
|
2434
|
+
|
|
2435
|
+
|
|
2436
|
+
|
|
2437
|
+
|
|
2438
|
+
|
|
2439
|
+
|
|
2440
|
+
|
|
2441
|
+
|
|
2442
|
+
|
|
2443
|
+
|
|
2444
|
+
|
|
2445
|
+
|
|
2446
|
+
|
|
2447
|
+
|
|
2448
|
+
|
|
2449
|
+
|
|
2450
|
+
|
|
2451
|
+
|
|
2452
|
+
|
|
2453
|
+
|
|
2454
|
+
|
|
2455
|
+
|
|
2456
|
+
|
|
2457
|
+
|
|
2458
|
+
|
|
2459
|
+
|
|
2460
|
+
|
|
2461
|
+
|
|
2462
|
+
|
|
2463
|
+
|
|
2464
|
+
|
|
2465
|
+
|
|
2466
|
+
|
|
2467
|
+
|
|
2468
|
+
|
|
2469
|
+
|
|
2470
|
+
|
|
2471
|
+
|
|
2472
|
+
|
|
2473
|
+
|
|
2474
|
+
|
|
2475
|
+
|
|
2476
|
+
|
|
2477
|
+
|
|
2478
|
+
|
|
2479
|
+
|
|
2480
|
+
|
|
2481
|
+
|
|
2482
|
+
|
|
2483
|
+
|
|
2484
|
+
|
|
2485
|
+
|
|
2486
|
+
|
|
2487
|
+
|
|
2488
|
+
|
|
2489
|
+
|
|
2490
|
+
|
|
2491
|
+
|
|
2492
|
+
|
|
2493
|
+
|
|
2494
|
+
|
|
2495
|
+
|
|
2496
|
+
|
|
2497
|
+
|
|
2498
|
+
|
|
2499
|
+
|
|
2500
|
+
|
|
2501
|
+
|
|
2502
|
+
|
|
2503
|
+
|
|
2504
|
+
|
|
2505
|
+
|
|
2506
|
+
|
|
2507
|
+
|
|
2508
|
+
|
|
2509
|
+
|
|
2510
|
+
|
|
2511
|
+
|
|
2512
|
+
|
|
2513
|
+
|
|
2514
|
+
|
|
2515
|
+
|
|
2516
|
+
|
|
2517
|
+
|
|
2518
|
+
|
|
2519
|
+
|
|
2520
|
+
|
|
2521
|
+
|
|
2522
|
+
|
|
2523
|
+
|
|
2524
|
+
|
|
2525
|
+
|
|
2526
|
+
|
|
2527
|
+
|
|
2528
|
+
|
|
2529
|
+
|
|
2530
|
+
|
|
2531
|
+
|
|
2532
|
+
|
|
2533
|
+
|
|
2534
|
+
|
|
2535
|
+
|
|
2536
|
+
|
|
2537
|
+
|
|
2538
|
+
|
|
2539
|
+
|
|
2540
|
+
|
|
2541
|
+
|
|
2542
|
+
|
|
2543
|
+
|
|
2544
|
+
|
|
2545
|
+
|
|
2546
|
+
|
|
2547
|
+
|
|
2548
|
+
|
|
2549
|
+
|
|
2550
|
+
|
|
2551
|
+
|
|
2552
|
+
|
|
2553
|
+
|
|
2554
|
+
|
|
2555
|
+
|
|
2556
|
+
|
|
2557
|
+
|
|
2558
|
+
|
|
2559
|
+
|
|
2560
|
+
|
|
2561
|
+
|
|
2562
|
+
|
|
2563
|
+
|
|
2564
|
+
|
|
2565
|
+
|
|
2566
|
+
|
|
2567
|
+
|
|
2568
|
+
|
|
2569
|
+
|
|
2570
|
+
|
|
2571
|
+
|
|
2572
|
+
|
|
2573
|
+
|
|
2574
|
+
|
|
2575
|
+
|
|
2576
|
+
|
|
2577
|
+
|
|
2578
|
+
|
|
2579
|
+
|
|
2580
|
+
|
|
2581
|
+
|
|
2582
|
+
|
|
2583
|
+
|
|
2584
|
+
* @example
|
|
2585
|
+
* // Greatest key ≤ target
|
|
2586
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
2587
|
+
* mm.add(10, 'a');
|
|
2588
|
+
* mm.add(20, 'b');
|
|
2589
|
+
* mm.add(30, 'c');
|
|
2590
|
+
* console.log(mm.floor(25)?.[0]); // 20;
|
|
2591
|
+
*/
|
|
2592
|
+
floor(key: K): [K, V[]] | undefined;
|
|
2593
|
+
/**
|
|
2594
|
+
* Returns the entry with the smallest key > given key.
|
|
2595
|
+
* @remarks Time O(log n), Space O(1)
|
|
2596
|
+
|
|
2597
|
+
|
|
2598
|
+
|
|
2599
|
+
|
|
2600
|
+
|
|
2601
|
+
|
|
2602
|
+
|
|
2603
|
+
|
|
2604
|
+
|
|
2605
|
+
|
|
2606
|
+
|
|
2607
|
+
|
|
2608
|
+
|
|
2609
|
+
|
|
2610
|
+
|
|
2611
|
+
|
|
2612
|
+
|
|
2613
|
+
|
|
2614
|
+
|
|
2615
|
+
|
|
2616
|
+
|
|
2617
|
+
|
|
2618
|
+
|
|
2619
|
+
|
|
2620
|
+
|
|
2621
|
+
|
|
2622
|
+
|
|
2623
|
+
|
|
2624
|
+
|
|
2625
|
+
|
|
2626
|
+
|
|
2627
|
+
|
|
2628
|
+
|
|
2629
|
+
|
|
2630
|
+
|
|
2631
|
+
|
|
2632
|
+
|
|
2633
|
+
|
|
2634
|
+
|
|
2635
|
+
|
|
2636
|
+
|
|
2637
|
+
|
|
2638
|
+
|
|
2639
|
+
|
|
2640
|
+
|
|
2641
|
+
|
|
2642
|
+
|
|
2643
|
+
|
|
2644
|
+
|
|
2645
|
+
|
|
2646
|
+
|
|
2647
|
+
|
|
2648
|
+
|
|
2649
|
+
|
|
2650
|
+
|
|
2651
|
+
|
|
2652
|
+
|
|
2653
|
+
|
|
2654
|
+
|
|
2655
|
+
|
|
2656
|
+
|
|
2657
|
+
|
|
2658
|
+
|
|
2659
|
+
|
|
2660
|
+
|
|
2661
|
+
|
|
2662
|
+
|
|
2663
|
+
|
|
2664
|
+
|
|
2665
|
+
|
|
2666
|
+
|
|
2667
|
+
|
|
2668
|
+
|
|
2669
|
+
|
|
2670
|
+
|
|
2671
|
+
|
|
2672
|
+
|
|
2673
|
+
|
|
2674
|
+
|
|
2675
|
+
|
|
2676
|
+
|
|
2677
|
+
|
|
2678
|
+
|
|
2679
|
+
|
|
2680
|
+
|
|
2681
|
+
|
|
2682
|
+
|
|
2683
|
+
|
|
2684
|
+
|
|
2685
|
+
|
|
2686
|
+
|
|
2687
|
+
|
|
2688
|
+
|
|
2689
|
+
|
|
2690
|
+
|
|
2691
|
+
|
|
2692
|
+
|
|
2693
|
+
|
|
2694
|
+
|
|
2695
|
+
|
|
2696
|
+
|
|
2697
|
+
|
|
2698
|
+
|
|
2699
|
+
|
|
2700
|
+
|
|
2701
|
+
|
|
2702
|
+
|
|
2703
|
+
|
|
2704
|
+
|
|
2705
|
+
|
|
2706
|
+
|
|
2707
|
+
|
|
2708
|
+
|
|
2709
|
+
|
|
2710
|
+
|
|
2711
|
+
|
|
2712
|
+
|
|
2713
|
+
|
|
2714
|
+
|
|
2715
|
+
|
|
2716
|
+
|
|
2717
|
+
|
|
2718
|
+
|
|
2719
|
+
|
|
2720
|
+
|
|
2721
|
+
|
|
2722
|
+
* @example
|
|
2723
|
+
* // Least key > target
|
|
2724
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
2725
|
+
* mm.add(10, 'a');
|
|
2726
|
+
* mm.add(20, 'b');
|
|
2727
|
+
* console.log(mm.higher(10)?.[0]); // 20;
|
|
2728
|
+
*/
|
|
2729
|
+
higher(key: K): [K, V[]] | undefined;
|
|
2730
|
+
/**
|
|
2731
|
+
* Returns the entry with the largest key < given key.
|
|
2732
|
+
* @remarks Time O(log n), Space O(1)
|
|
2733
|
+
|
|
2734
|
+
|
|
2735
|
+
|
|
2736
|
+
|
|
2737
|
+
|
|
2738
|
+
|
|
2739
|
+
|
|
2740
|
+
|
|
2741
|
+
|
|
2742
|
+
|
|
2743
|
+
|
|
2744
|
+
|
|
2745
|
+
|
|
2746
|
+
|
|
2747
|
+
|
|
2748
|
+
|
|
2749
|
+
|
|
2750
|
+
|
|
2751
|
+
|
|
2752
|
+
|
|
2753
|
+
|
|
2754
|
+
|
|
2755
|
+
|
|
2756
|
+
|
|
2757
|
+
|
|
2758
|
+
|
|
2759
|
+
|
|
2760
|
+
|
|
2761
|
+
|
|
2762
|
+
|
|
2763
|
+
|
|
2764
|
+
|
|
2765
|
+
|
|
2766
|
+
|
|
2767
|
+
|
|
2768
|
+
|
|
2769
|
+
|
|
2770
|
+
|
|
2771
|
+
|
|
2772
|
+
|
|
2773
|
+
|
|
2774
|
+
|
|
2775
|
+
|
|
2776
|
+
|
|
2777
|
+
|
|
2778
|
+
|
|
2779
|
+
|
|
2780
|
+
|
|
2781
|
+
|
|
2782
|
+
|
|
2783
|
+
|
|
2784
|
+
|
|
2785
|
+
|
|
2786
|
+
|
|
2787
|
+
|
|
2788
|
+
|
|
2789
|
+
|
|
2790
|
+
|
|
2791
|
+
|
|
2792
|
+
|
|
2793
|
+
|
|
2794
|
+
|
|
2795
|
+
|
|
2796
|
+
|
|
2797
|
+
|
|
2798
|
+
|
|
2799
|
+
|
|
2800
|
+
|
|
2801
|
+
|
|
2802
|
+
|
|
2803
|
+
|
|
2804
|
+
|
|
2805
|
+
|
|
2806
|
+
|
|
2807
|
+
|
|
2808
|
+
|
|
2809
|
+
|
|
2810
|
+
|
|
2811
|
+
|
|
2812
|
+
|
|
2813
|
+
|
|
2814
|
+
|
|
2815
|
+
|
|
2816
|
+
|
|
2817
|
+
|
|
2818
|
+
|
|
2819
|
+
|
|
2820
|
+
|
|
2821
|
+
|
|
2822
|
+
|
|
2823
|
+
|
|
2824
|
+
|
|
2825
|
+
|
|
2826
|
+
|
|
2827
|
+
|
|
2828
|
+
|
|
2829
|
+
|
|
2830
|
+
|
|
2831
|
+
|
|
2832
|
+
|
|
2833
|
+
|
|
2834
|
+
|
|
2835
|
+
|
|
2836
|
+
|
|
2837
|
+
|
|
2838
|
+
|
|
2839
|
+
|
|
2840
|
+
|
|
2841
|
+
|
|
2842
|
+
|
|
2843
|
+
|
|
2844
|
+
|
|
2845
|
+
|
|
2846
|
+
|
|
2847
|
+
|
|
2848
|
+
|
|
2849
|
+
|
|
2850
|
+
|
|
2851
|
+
|
|
2852
|
+
|
|
2853
|
+
|
|
2854
|
+
|
|
2855
|
+
|
|
2856
|
+
|
|
2857
|
+
|
|
2858
|
+
|
|
2859
|
+
* @example
|
|
2860
|
+
* // Greatest key < target
|
|
2861
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
2862
|
+
* mm.add(10, 'a');
|
|
2863
|
+
* mm.add(20, 'b');
|
|
2864
|
+
* console.log(mm.lower(20)?.[0]); // 10;
|
|
2865
|
+
*/
|
|
2866
|
+
lower(key: K): [K, V[]] | undefined;
|
|
2867
|
+
/**
|
|
2868
|
+
* Prints the internal tree structure (for debugging).
|
|
2869
|
+
* @remarks Time O(n), Space O(n)
|
|
2870
|
+
|
|
2871
|
+
|
|
2872
|
+
|
|
2873
|
+
|
|
2874
|
+
|
|
2875
|
+
|
|
2876
|
+
|
|
2877
|
+
|
|
2878
|
+
|
|
2879
|
+
|
|
2880
|
+
|
|
2881
|
+
|
|
2882
|
+
|
|
2883
|
+
|
|
2884
|
+
|
|
2885
|
+
|
|
2886
|
+
|
|
2887
|
+
|
|
2888
|
+
|
|
2889
|
+
|
|
2890
|
+
|
|
2891
|
+
|
|
2892
|
+
|
|
2893
|
+
|
|
2894
|
+
|
|
2895
|
+
|
|
2896
|
+
|
|
2897
|
+
|
|
2898
|
+
|
|
2899
|
+
|
|
2900
|
+
|
|
2901
|
+
|
|
2902
|
+
|
|
2903
|
+
|
|
2904
|
+
|
|
2905
|
+
|
|
2906
|
+
|
|
2907
|
+
|
|
2908
|
+
|
|
2909
|
+
|
|
2910
|
+
|
|
2911
|
+
|
|
2912
|
+
|
|
2913
|
+
|
|
2914
|
+
|
|
2915
|
+
|
|
2916
|
+
|
|
2917
|
+
|
|
2918
|
+
|
|
2919
|
+
|
|
2920
|
+
|
|
2921
|
+
|
|
2922
|
+
|
|
2923
|
+
|
|
2924
|
+
|
|
2925
|
+
|
|
2926
|
+
|
|
2927
|
+
|
|
2928
|
+
|
|
2929
|
+
|
|
2930
|
+
|
|
2931
|
+
|
|
2932
|
+
|
|
2933
|
+
|
|
2934
|
+
|
|
2935
|
+
|
|
2936
|
+
|
|
2937
|
+
|
|
2938
|
+
|
|
2939
|
+
|
|
2940
|
+
|
|
2941
|
+
|
|
2942
|
+
|
|
2943
|
+
|
|
2944
|
+
|
|
2945
|
+
|
|
2946
|
+
|
|
2947
|
+
|
|
2948
|
+
|
|
2949
|
+
|
|
2950
|
+
|
|
2951
|
+
|
|
2952
|
+
|
|
2953
|
+
|
|
2954
|
+
|
|
2955
|
+
|
|
2956
|
+
|
|
2957
|
+
|
|
2958
|
+
|
|
2959
|
+
|
|
2960
|
+
|
|
2961
|
+
|
|
2962
|
+
|
|
2963
|
+
|
|
2964
|
+
|
|
2965
|
+
|
|
2966
|
+
|
|
2967
|
+
|
|
2968
|
+
|
|
2969
|
+
|
|
2970
|
+
|
|
2971
|
+
|
|
2972
|
+
|
|
2973
|
+
|
|
2974
|
+
|
|
2975
|
+
|
|
2976
|
+
|
|
2977
|
+
|
|
2978
|
+
|
|
2979
|
+
|
|
2980
|
+
|
|
2981
|
+
|
|
2982
|
+
|
|
2983
|
+
|
|
2984
|
+
|
|
2985
|
+
|
|
2986
|
+
|
|
2987
|
+
|
|
2988
|
+
|
|
2989
|
+
|
|
2990
|
+
|
|
2991
|
+
|
|
2992
|
+
|
|
2993
|
+
|
|
2994
|
+
|
|
2995
|
+
|
|
2996
|
+
|
|
2997
|
+
|
|
2998
|
+
|
|
2999
|
+
|
|
3000
|
+
|
|
3001
|
+
|
|
3002
|
+
|
|
3003
|
+
|
|
3004
|
+
|
|
3005
|
+
|
|
3006
|
+
|
|
3007
|
+
|
|
3008
|
+
|
|
3009
|
+
|
|
3010
|
+
|
|
3011
|
+
|
|
3012
|
+
|
|
3013
|
+
|
|
3014
|
+
|
|
3015
|
+
|
|
3016
|
+
|
|
3017
|
+
|
|
3018
|
+
|
|
3019
|
+
|
|
3020
|
+
|
|
3021
|
+
|
|
3022
|
+
|
|
3023
|
+
|
|
3024
|
+
|
|
3025
|
+
|
|
3026
|
+
|
|
3027
|
+
|
|
3028
|
+
* @example
|
|
3029
|
+
* // Display tree
|
|
3030
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
3031
|
+
* mm.add(1, 'a');
|
|
3032
|
+
* expect(() => mm.print()).not.toThrow();
|
|
3033
|
+
*/
|
|
3034
|
+
print(): void;
|
|
3035
|
+
/**
|
|
3036
|
+
* Executes a callback for each entry.
|
|
3037
|
+
* @remarks Time O(n), Space O(1)
|
|
3038
|
+
|
|
3039
|
+
|
|
3040
|
+
|
|
3041
|
+
|
|
3042
|
+
|
|
3043
|
+
|
|
3044
|
+
|
|
3045
|
+
|
|
3046
|
+
|
|
3047
|
+
|
|
3048
|
+
|
|
3049
|
+
|
|
3050
|
+
|
|
3051
|
+
|
|
3052
|
+
|
|
3053
|
+
|
|
3054
|
+
|
|
3055
|
+
|
|
3056
|
+
|
|
3057
|
+
|
|
3058
|
+
|
|
3059
|
+
|
|
3060
|
+
|
|
3061
|
+
|
|
3062
|
+
|
|
3063
|
+
|
|
3064
|
+
|
|
3065
|
+
|
|
3066
|
+
|
|
3067
|
+
|
|
3068
|
+
|
|
3069
|
+
|
|
3070
|
+
|
|
3071
|
+
|
|
3072
|
+
|
|
3073
|
+
|
|
3074
|
+
|
|
3075
|
+
|
|
3076
|
+
|
|
3077
|
+
|
|
3078
|
+
|
|
3079
|
+
|
|
3080
|
+
|
|
3081
|
+
|
|
3082
|
+
|
|
3083
|
+
|
|
3084
|
+
|
|
3085
|
+
|
|
3086
|
+
|
|
3087
|
+
|
|
3088
|
+
|
|
3089
|
+
|
|
3090
|
+
|
|
3091
|
+
|
|
3092
|
+
|
|
3093
|
+
|
|
3094
|
+
|
|
3095
|
+
|
|
3096
|
+
|
|
3097
|
+
|
|
3098
|
+
|
|
3099
|
+
|
|
3100
|
+
|
|
3101
|
+
|
|
3102
|
+
|
|
3103
|
+
|
|
3104
|
+
|
|
3105
|
+
|
|
3106
|
+
|
|
3107
|
+
|
|
3108
|
+
|
|
3109
|
+
|
|
3110
|
+
|
|
3111
|
+
|
|
3112
|
+
|
|
3113
|
+
|
|
3114
|
+
|
|
3115
|
+
|
|
3116
|
+
|
|
3117
|
+
|
|
3118
|
+
|
|
3119
|
+
|
|
3120
|
+
|
|
3121
|
+
|
|
3122
|
+
|
|
3123
|
+
|
|
3124
|
+
|
|
3125
|
+
|
|
3126
|
+
|
|
3127
|
+
|
|
3128
|
+
|
|
3129
|
+
|
|
3130
|
+
|
|
3131
|
+
|
|
3132
|
+
|
|
3133
|
+
|
|
3134
|
+
|
|
3135
|
+
|
|
3136
|
+
|
|
3137
|
+
|
|
3138
|
+
|
|
3139
|
+
|
|
3140
|
+
|
|
3141
|
+
|
|
3142
|
+
|
|
3143
|
+
|
|
3144
|
+
|
|
3145
|
+
|
|
3146
|
+
|
|
3147
|
+
|
|
3148
|
+
|
|
3149
|
+
|
|
3150
|
+
|
|
3151
|
+
|
|
3152
|
+
|
|
3153
|
+
|
|
3154
|
+
|
|
3155
|
+
|
|
3156
|
+
|
|
3157
|
+
|
|
3158
|
+
|
|
3159
|
+
|
|
3160
|
+
|
|
3161
|
+
|
|
3162
|
+
|
|
3163
|
+
|
|
3164
|
+
|
|
3165
|
+
|
|
3166
|
+
|
|
3167
|
+
|
|
3168
|
+
|
|
3169
|
+
|
|
3170
|
+
|
|
3171
|
+
|
|
3172
|
+
|
|
3173
|
+
|
|
3174
|
+
|
|
3175
|
+
|
|
3176
|
+
|
|
3177
|
+
|
|
3178
|
+
|
|
3179
|
+
|
|
3180
|
+
|
|
3181
|
+
|
|
3182
|
+
|
|
3183
|
+
|
|
3184
|
+
|
|
3185
|
+
|
|
3186
|
+
|
|
3187
|
+
|
|
3188
|
+
|
|
3189
|
+
|
|
3190
|
+
|
|
3191
|
+
|
|
3192
|
+
|
|
3193
|
+
|
|
3194
|
+
|
|
3195
|
+
|
|
3196
|
+
* @example
|
|
3197
|
+
* // Iterate entries
|
|
3198
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
3199
|
+
* mm.add(1, 'a');
|
|
3200
|
+
* mm.add(2, 'b');
|
|
3201
|
+
* const keys: number[] = [];
|
|
3202
|
+
* mm.forEach((v, k) => keys.push(k));
|
|
3203
|
+
* console.log(keys); // [1, 2];
|
|
3204
|
+
*/
|
|
3205
|
+
forEach(callback: (value: V[], key: K, map: this) => void): void;
|
|
3206
|
+
/**
|
|
3207
|
+
* Creates a new map with entries that pass the predicate.
|
|
3208
|
+
* @remarks Time O(n), Space O(n)
|
|
3209
|
+
|
|
3210
|
+
|
|
3211
|
+
|
|
3212
|
+
|
|
3213
|
+
|
|
3214
|
+
|
|
3215
|
+
|
|
3216
|
+
|
|
3217
|
+
|
|
3218
|
+
|
|
3219
|
+
|
|
3220
|
+
|
|
3221
|
+
|
|
3222
|
+
|
|
3223
|
+
|
|
3224
|
+
|
|
3225
|
+
|
|
3226
|
+
|
|
3227
|
+
|
|
3228
|
+
|
|
3229
|
+
|
|
3230
|
+
|
|
3231
|
+
|
|
3232
|
+
|
|
3233
|
+
|
|
3234
|
+
|
|
3235
|
+
|
|
3236
|
+
|
|
3237
|
+
|
|
3238
|
+
|
|
3239
|
+
|
|
3240
|
+
|
|
3241
|
+
|
|
3242
|
+
|
|
3243
|
+
|
|
3244
|
+
|
|
3245
|
+
|
|
3246
|
+
|
|
3247
|
+
|
|
3248
|
+
|
|
3249
|
+
|
|
3250
|
+
|
|
3251
|
+
|
|
3252
|
+
|
|
3253
|
+
|
|
3254
|
+
|
|
3255
|
+
|
|
3256
|
+
|
|
3257
|
+
|
|
3258
|
+
|
|
3259
|
+
|
|
3260
|
+
|
|
3261
|
+
|
|
3262
|
+
|
|
3263
|
+
|
|
3264
|
+
|
|
3265
|
+
|
|
3266
|
+
|
|
3267
|
+
|
|
3268
|
+
|
|
3269
|
+
|
|
3270
|
+
|
|
3271
|
+
|
|
3272
|
+
|
|
3273
|
+
|
|
3274
|
+
|
|
3275
|
+
|
|
3276
|
+
|
|
3277
|
+
|
|
3278
|
+
|
|
3279
|
+
|
|
3280
|
+
|
|
3281
|
+
|
|
3282
|
+
|
|
3283
|
+
|
|
3284
|
+
|
|
3285
|
+
|
|
3286
|
+
|
|
3287
|
+
|
|
3288
|
+
|
|
3289
|
+
|
|
3290
|
+
|
|
3291
|
+
|
|
3292
|
+
|
|
3293
|
+
|
|
3294
|
+
|
|
3295
|
+
|
|
3296
|
+
|
|
3297
|
+
|
|
3298
|
+
|
|
3299
|
+
|
|
3300
|
+
|
|
3301
|
+
|
|
3302
|
+
|
|
3303
|
+
|
|
3304
|
+
|
|
3305
|
+
|
|
3306
|
+
|
|
3307
|
+
|
|
3308
|
+
|
|
3309
|
+
|
|
3310
|
+
|
|
3311
|
+
|
|
3312
|
+
|
|
3313
|
+
|
|
3314
|
+
|
|
3315
|
+
|
|
3316
|
+
|
|
3317
|
+
|
|
3318
|
+
|
|
3319
|
+
|
|
3320
|
+
|
|
3321
|
+
|
|
3322
|
+
|
|
3323
|
+
|
|
3324
|
+
|
|
3325
|
+
|
|
3326
|
+
|
|
3327
|
+
|
|
3328
|
+
|
|
3329
|
+
|
|
3330
|
+
|
|
3331
|
+
|
|
3332
|
+
|
|
3333
|
+
|
|
3334
|
+
|
|
3335
|
+
|
|
3336
|
+
|
|
3337
|
+
|
|
3338
|
+
|
|
3339
|
+
|
|
3340
|
+
|
|
3341
|
+
|
|
3342
|
+
|
|
3343
|
+
|
|
3344
|
+
|
|
3345
|
+
|
|
3346
|
+
|
|
3347
|
+
|
|
3348
|
+
|
|
3349
|
+
|
|
3350
|
+
|
|
3351
|
+
|
|
3352
|
+
|
|
3353
|
+
|
|
3354
|
+
|
|
3355
|
+
|
|
3356
|
+
|
|
3357
|
+
|
|
3358
|
+
|
|
3359
|
+
|
|
3360
|
+
|
|
3361
|
+
|
|
3362
|
+
|
|
3363
|
+
|
|
3364
|
+
|
|
3365
|
+
|
|
3366
|
+
|
|
3367
|
+
* @example
|
|
3368
|
+
* // Filter entries
|
|
3369
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
3370
|
+
* mm.add(1, 'a');
|
|
3371
|
+
* mm.add(2, 'b');
|
|
3372
|
+
* mm.add(3, 'c');
|
|
3373
|
+
* const filtered = mm.filter((v, k) => k > 1);
|
|
3374
|
+
* console.log([...filtered.keys()]); // [2, 3];
|
|
3375
|
+
*/
|
|
3376
|
+
filter(predicate: (value: V[], key: K, map: this) => boolean): TreeMultiMap<K, V, R>;
|
|
3377
|
+
/**
|
|
3378
|
+
* Creates a new map by transforming each entry.
|
|
3379
|
+
* @remarks Time O(n log n), Space O(n)
|
|
3380
|
+
|
|
3381
|
+
|
|
3382
|
+
|
|
3383
|
+
|
|
3384
|
+
|
|
3385
|
+
|
|
3386
|
+
|
|
3387
|
+
|
|
3388
|
+
|
|
3389
|
+
|
|
3390
|
+
|
|
3391
|
+
|
|
3392
|
+
|
|
3393
|
+
|
|
3394
|
+
|
|
3395
|
+
|
|
3396
|
+
|
|
3397
|
+
|
|
3398
|
+
|
|
3399
|
+
|
|
3400
|
+
|
|
3401
|
+
|
|
3402
|
+
|
|
3403
|
+
|
|
3404
|
+
|
|
3405
|
+
|
|
3406
|
+
|
|
3407
|
+
|
|
3408
|
+
|
|
3409
|
+
|
|
3410
|
+
|
|
3411
|
+
|
|
3412
|
+
|
|
3413
|
+
|
|
3414
|
+
|
|
3415
|
+
|
|
3416
|
+
|
|
3417
|
+
|
|
3418
|
+
|
|
3419
|
+
|
|
3420
|
+
|
|
3421
|
+
|
|
3422
|
+
|
|
3423
|
+
|
|
3424
|
+
|
|
3425
|
+
|
|
3426
|
+
|
|
3427
|
+
|
|
3428
|
+
|
|
3429
|
+
|
|
3430
|
+
|
|
3431
|
+
|
|
3432
|
+
|
|
3433
|
+
|
|
3434
|
+
|
|
3435
|
+
|
|
3436
|
+
|
|
3437
|
+
|
|
3438
|
+
|
|
3439
|
+
|
|
3440
|
+
|
|
3441
|
+
|
|
3442
|
+
|
|
3443
|
+
|
|
3444
|
+
|
|
3445
|
+
|
|
3446
|
+
|
|
3447
|
+
|
|
3448
|
+
|
|
3449
|
+
|
|
3450
|
+
|
|
3451
|
+
|
|
3452
|
+
|
|
3453
|
+
|
|
3454
|
+
|
|
3455
|
+
|
|
3456
|
+
|
|
3457
|
+
|
|
3458
|
+
|
|
3459
|
+
|
|
3460
|
+
|
|
3461
|
+
|
|
3462
|
+
|
|
3463
|
+
|
|
3464
|
+
|
|
3465
|
+
|
|
3466
|
+
|
|
3467
|
+
|
|
3468
|
+
|
|
3469
|
+
|
|
3470
|
+
|
|
3471
|
+
|
|
3472
|
+
|
|
3473
|
+
|
|
3474
|
+
|
|
3475
|
+
|
|
3476
|
+
|
|
3477
|
+
|
|
3478
|
+
|
|
3479
|
+
|
|
3480
|
+
|
|
3481
|
+
|
|
3482
|
+
|
|
3483
|
+
|
|
3484
|
+
|
|
3485
|
+
|
|
3486
|
+
|
|
3487
|
+
|
|
3488
|
+
|
|
3489
|
+
|
|
3490
|
+
|
|
3491
|
+
|
|
3492
|
+
|
|
3493
|
+
|
|
3494
|
+
|
|
3495
|
+
|
|
3496
|
+
|
|
3497
|
+
|
|
3498
|
+
|
|
3499
|
+
|
|
3500
|
+
|
|
3501
|
+
|
|
3502
|
+
|
|
3503
|
+
|
|
3504
|
+
|
|
3505
|
+
|
|
3506
|
+
|
|
3507
|
+
|
|
3508
|
+
|
|
3509
|
+
|
|
3510
|
+
|
|
3511
|
+
|
|
3512
|
+
|
|
3513
|
+
|
|
3514
|
+
|
|
3515
|
+
|
|
3516
|
+
|
|
3517
|
+
|
|
3518
|
+
|
|
3519
|
+
|
|
3520
|
+
|
|
3521
|
+
|
|
3522
|
+
|
|
3523
|
+
|
|
3524
|
+
|
|
3525
|
+
|
|
3526
|
+
|
|
3527
|
+
|
|
3528
|
+
|
|
3529
|
+
|
|
3530
|
+
|
|
3531
|
+
|
|
3532
|
+
|
|
3533
|
+
|
|
3534
|
+
|
|
3535
|
+
|
|
3536
|
+
|
|
3537
|
+
|
|
3538
|
+
* @example
|
|
3539
|
+
* // Transform values
|
|
3540
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
3541
|
+
* mm.add(1, 'a');
|
|
3542
|
+
* const mapped = mm.map((v, k) => [k, v.map(s => s.toUpperCase())] as [number, string[]]);
|
|
3543
|
+
* console.log(mapped.get(1)); // ['A'];
|
|
3544
|
+
*/
|
|
3545
|
+
map<V2>(mapper: (value: V[], key: K, map: this) => [K, V2[]]): TreeMultiMap<K, V2, R>;
|
|
3546
|
+
/**
|
|
3547
|
+
* Reduces all entries to a single value.
|
|
3548
|
+
* @remarks Time O(n), Space O(1)
|
|
3549
|
+
|
|
3550
|
+
|
|
3551
|
+
|
|
3552
|
+
|
|
3553
|
+
|
|
3554
|
+
|
|
519
3555
|
|
|
520
3556
|
|
|
521
3557
|
|
|
@@ -554,17 +3590,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
554
3590
|
|
|
555
3591
|
|
|
556
3592
|
|
|
557
|
-
* @example
|
|
558
|
-
* // Iterate keys
|
|
559
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
560
|
-
* mm.add(3, 'c');
|
|
561
|
-
* mm.add(1, 'a');
|
|
562
|
-
* console.log([...mm.keys()]); // [1, 3];
|
|
563
|
-
*/
|
|
564
|
-
keys(): IterableIterator<K>;
|
|
565
|
-
/**
|
|
566
|
-
* Iterates over all buckets.
|
|
567
|
-
* @remarks Time O(n), Space O(1)
|
|
568
3593
|
|
|
569
3594
|
|
|
570
3595
|
|
|
@@ -603,58 +3628,12 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
603
3628
|
|
|
604
3629
|
|
|
605
3630
|
|
|
606
|
-
* @example
|
|
607
|
-
* // Iterate value arrays
|
|
608
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
609
|
-
* mm.add(1, 'a');
|
|
610
|
-
* mm.add(1, 'b');
|
|
611
|
-
* console.log([...mm.values()]); // [['a', 'b']];
|
|
612
|
-
*/
|
|
613
|
-
values(): IterableIterator<V[]>;
|
|
614
|
-
/**
|
|
615
|
-
* Iterates over all entries for a specific key.
|
|
616
|
-
* @remarks Time O(log n + m), Space O(1) where m is bucket size
|
|
617
3631
|
|
|
618
3632
|
|
|
619
|
-
* @example
|
|
620
|
-
* // Get entries for key
|
|
621
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
622
|
-
* mm.add(1, 'a');
|
|
623
|
-
* mm.add(1, 'b');
|
|
624
|
-
* console.log([...mm.entriesOf(1)]); // [[1, 'a'], [1, 'b']];
|
|
625
|
-
*/
|
|
626
|
-
entriesOf(key: K): IterableIterator<[K, V]>;
|
|
627
|
-
/**
|
|
628
|
-
* Iterates over all values for a specific key.
|
|
629
|
-
* @remarks Time O(log n + m), Space O(1) where m is bucket size
|
|
630
3633
|
|
|
631
3634
|
|
|
632
|
-
* @example
|
|
633
|
-
* // Get flat values for key
|
|
634
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
635
|
-
* mm.add(1, 'a');
|
|
636
|
-
* mm.add(1, 'b');
|
|
637
|
-
* console.log([...mm.valuesOf(1)]); // ['a', 'b'];
|
|
638
|
-
*/
|
|
639
|
-
valuesOf(key: K): IterableIterator<V>;
|
|
640
|
-
/**
|
|
641
|
-
* Iterates over all [key, value] pairs (flattened from buckets).
|
|
642
|
-
* @remarks Time O(T), Space O(1) where T is totalSize
|
|
643
3635
|
|
|
644
3636
|
|
|
645
|
-
* @example
|
|
646
|
-
* // All key-value pairs flattened
|
|
647
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
648
|
-
* mm.add(1, 'a');
|
|
649
|
-
* mm.add(1, 'b');
|
|
650
|
-
* mm.add(2, 'c');
|
|
651
|
-
* console.log([...mm.flatEntries()]); // [[1, 'a'], [1, 'b'], [2, 'c']];
|
|
652
|
-
*/
|
|
653
|
-
flatEntries(): IterableIterator<[K, V]>;
|
|
654
|
-
/**
|
|
655
|
-
* Returns the entry with the smallest key.
|
|
656
|
-
* @remarks Time O(log n), Space O(1)
|
|
657
|
-
|
|
658
3637
|
|
|
659
3638
|
|
|
660
3639
|
|
|
@@ -668,18 +3647,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
668
3647
|
|
|
669
3648
|
|
|
670
3649
|
|
|
671
|
-
* @example
|
|
672
|
-
* // First entry
|
|
673
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
674
|
-
* mm.add(3, 'c');
|
|
675
|
-
* mm.add(1, 'a');
|
|
676
|
-
* console.log(mm.first()?.[0]); // 1;
|
|
677
|
-
*/
|
|
678
|
-
first(): [K, V[]] | undefined;
|
|
679
|
-
/**
|
|
680
|
-
* Returns the entry with the largest key.
|
|
681
|
-
* @remarks Time O(log n), Space O(1)
|
|
682
|
-
|
|
683
3650
|
|
|
684
3651
|
|
|
685
3652
|
|
|
@@ -693,49 +3660,10 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
693
3660
|
|
|
694
3661
|
|
|
695
3662
|
|
|
696
|
-
* @example
|
|
697
|
-
* // Last entry
|
|
698
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
699
|
-
* mm.add(1, 'a');
|
|
700
|
-
* mm.add(3, 'c');
|
|
701
|
-
* console.log(mm.last()?.[0]); // 3;
|
|
702
|
-
*/
|
|
703
|
-
last(): [K, V[]] | undefined;
|
|
704
|
-
/**
|
|
705
|
-
* Removes and returns the entry with the smallest key.
|
|
706
|
-
* @remarks Time O(log n), Space O(1)
|
|
707
|
-
|
|
708
3663
|
|
|
709
3664
|
|
|
710
|
-
* @example
|
|
711
|
-
* // Remove and return first
|
|
712
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
713
|
-
* mm.add(2, 'b');
|
|
714
|
-
* mm.add(1, 'a');
|
|
715
|
-
* const first = mm.pollFirst();
|
|
716
|
-
* console.log(first?.[0]); // 1;
|
|
717
|
-
* console.log(mm.has(1)); // false;
|
|
718
|
-
*/
|
|
719
|
-
pollFirst(): [K, V[]] | undefined;
|
|
720
|
-
/**
|
|
721
|
-
* Removes and returns the entry with the largest key.
|
|
722
|
-
* @remarks Time O(log n), Space O(1)
|
|
723
|
-
|
|
724
3665
|
|
|
725
3666
|
|
|
726
|
-
* @example
|
|
727
|
-
* // Remove and return last
|
|
728
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
729
|
-
* mm.add(1, 'a');
|
|
730
|
-
* mm.add(3, 'c');
|
|
731
|
-
* const last = mm.pollLast();
|
|
732
|
-
* console.log(last?.[0]); // 3;
|
|
733
|
-
*/
|
|
734
|
-
pollLast(): [K, V[]] | undefined;
|
|
735
|
-
/**
|
|
736
|
-
* Returns the entry with the smallest key >= given key.
|
|
737
|
-
* @remarks Time O(log n), Space O(1)
|
|
738
|
-
|
|
739
3667
|
|
|
740
3668
|
|
|
741
3669
|
|
|
@@ -777,18 +3705,31 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
777
3705
|
|
|
778
3706
|
|
|
779
3707
|
* @example
|
|
780
|
-
* //
|
|
781
|
-
* const mm = new TreeMultiMap<number,
|
|
782
|
-
* mm.add(
|
|
783
|
-
* mm.add(
|
|
784
|
-
* mm.
|
|
785
|
-
* console.log(
|
|
3708
|
+
* // Aggregate
|
|
3709
|
+
* const mm = new TreeMultiMap<number, number>();
|
|
3710
|
+
* mm.add(1, 10);
|
|
3711
|
+
* mm.add(2, 20);
|
|
3712
|
+
* const sum = mm.reduce((acc, v) => acc + v.reduce((a, b) => a + b, 0), 0);
|
|
3713
|
+
* console.log(sum); // 30;
|
|
786
3714
|
*/
|
|
787
|
-
|
|
3715
|
+
reduce<U>(callback: (accumulator: U, value: V[], key: K, map: this) => U, initialValue: U): U;
|
|
788
3716
|
/**
|
|
789
|
-
*
|
|
790
|
-
* @remarks Time O(log n), Space O(
|
|
791
|
-
|
|
3717
|
+
* Sets multiple entries at once.
|
|
3718
|
+
* @remarks Time O(m log n), Space O(m) where m is input size
|
|
3719
|
+
|
|
3720
|
+
|
|
3721
|
+
|
|
3722
|
+
|
|
3723
|
+
|
|
3724
|
+
|
|
3725
|
+
|
|
3726
|
+
|
|
3727
|
+
|
|
3728
|
+
|
|
3729
|
+
|
|
3730
|
+
|
|
3731
|
+
|
|
3732
|
+
|
|
792
3733
|
|
|
793
3734
|
|
|
794
3735
|
|
|
@@ -829,19 +3770,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
829
3770
|
|
|
830
3771
|
|
|
831
3772
|
|
|
832
|
-
* @example
|
|
833
|
-
* // Greatest key ≤ target
|
|
834
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
835
|
-
* mm.add(10, 'a');
|
|
836
|
-
* mm.add(20, 'b');
|
|
837
|
-
* mm.add(30, 'c');
|
|
838
|
-
* console.log(mm.floor(25)?.[0]); // 20;
|
|
839
|
-
*/
|
|
840
|
-
floor(key: K): [K, V[]] | undefined;
|
|
841
|
-
/**
|
|
842
|
-
* Returns the entry with the smallest key > given key.
|
|
843
|
-
* @remarks Time O(log n), Space O(1)
|
|
844
|
-
|
|
845
3773
|
|
|
846
3774
|
|
|
847
3775
|
|
|
@@ -871,18 +3799,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
871
3799
|
|
|
872
3800
|
|
|
873
3801
|
|
|
874
|
-
* @example
|
|
875
|
-
* // Least key > target
|
|
876
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
877
|
-
* mm.add(10, 'a');
|
|
878
|
-
* mm.add(20, 'b');
|
|
879
|
-
* console.log(mm.higher(10)?.[0]); // 20;
|
|
880
|
-
*/
|
|
881
|
-
higher(key: K): [K, V[]] | undefined;
|
|
882
|
-
/**
|
|
883
|
-
* Returns the entry with the largest key < given key.
|
|
884
|
-
* @remarks Time O(log n), Space O(1)
|
|
885
|
-
|
|
886
3802
|
|
|
887
3803
|
|
|
888
3804
|
|
|
@@ -912,17 +3828,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
912
3828
|
|
|
913
3829
|
|
|
914
3830
|
|
|
915
|
-
* @example
|
|
916
|
-
* // Greatest key < target
|
|
917
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
918
|
-
* mm.add(10, 'a');
|
|
919
|
-
* mm.add(20, 'b');
|
|
920
|
-
* console.log(mm.lower(20)?.[0]); // 10;
|
|
921
|
-
*/
|
|
922
|
-
lower(key: K): [K, V[]] | undefined;
|
|
923
|
-
/**
|
|
924
|
-
* Prints the internal tree structure (for debugging).
|
|
925
|
-
* @remarks Time O(n), Space O(n)
|
|
926
3831
|
|
|
927
3832
|
|
|
928
3833
|
|
|
@@ -962,15 +3867,27 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
962
3867
|
|
|
963
3868
|
|
|
964
3869
|
* @example
|
|
965
|
-
* //
|
|
3870
|
+
* // Set multiple entries
|
|
966
3871
|
* const mm = new TreeMultiMap<number, string>();
|
|
967
|
-
* mm.
|
|
968
|
-
*
|
|
3872
|
+
* mm.setMany([[1, ['a']], [2, ['b']]]);
|
|
3873
|
+
* console.log(mm.size); // 2;
|
|
969
3874
|
*/
|
|
970
|
-
|
|
3875
|
+
setMany(keysNodesEntriesOrRaws: Iterable<K | [K | null | undefined, V[] | undefined]>): boolean[];
|
|
971
3876
|
/**
|
|
972
|
-
*
|
|
973
|
-
* @remarks Time O(n), Space O(
|
|
3877
|
+
* Searches for entries within a key range.
|
|
3878
|
+
* @remarks Time O(log n + k), Space O(k) where k is result size
|
|
3879
|
+
|
|
3880
|
+
|
|
3881
|
+
|
|
3882
|
+
|
|
3883
|
+
|
|
3884
|
+
|
|
3885
|
+
|
|
3886
|
+
|
|
3887
|
+
|
|
3888
|
+
|
|
3889
|
+
|
|
3890
|
+
|
|
974
3891
|
|
|
975
3892
|
|
|
976
3893
|
|
|
@@ -1009,19 +3926,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
1009
3926
|
|
|
1010
3927
|
|
|
1011
3928
|
|
|
1012
|
-
* @example
|
|
1013
|
-
* // Iterate entries
|
|
1014
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
1015
|
-
* mm.add(1, 'a');
|
|
1016
|
-
* mm.add(2, 'b');
|
|
1017
|
-
* const keys: number[] = [];
|
|
1018
|
-
* mm.forEach((v, k) => keys.push(k));
|
|
1019
|
-
* console.log(keys); // [1, 2];
|
|
1020
|
-
*/
|
|
1021
|
-
forEach(callback: (value: V[], key: K, map: this) => void): void;
|
|
1022
|
-
/**
|
|
1023
|
-
* Creates a new map with entries that pass the predicate.
|
|
1024
|
-
* @remarks Time O(n), Space O(n)
|
|
1025
3929
|
|
|
1026
3930
|
|
|
1027
3931
|
|
|
@@ -1060,19 +3964,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
1060
3964
|
|
|
1061
3965
|
|
|
1062
3966
|
|
|
1063
|
-
* @example
|
|
1064
|
-
* // Filter entries
|
|
1065
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
1066
|
-
* mm.add(1, 'a');
|
|
1067
|
-
* mm.add(2, 'b');
|
|
1068
|
-
* mm.add(3, 'c');
|
|
1069
|
-
* const filtered = mm.filter((v, k) => k > 1);
|
|
1070
|
-
* console.log([...filtered.keys()]); // [2, 3];
|
|
1071
|
-
*/
|
|
1072
|
-
filter(predicate: (value: V[], key: K, map: this) => boolean): TreeMultiMap<K, V, R>;
|
|
1073
|
-
/**
|
|
1074
|
-
* Creates a new map by transforming each entry.
|
|
1075
|
-
* @remarks Time O(n log n), Space O(n)
|
|
1076
3967
|
|
|
1077
3968
|
|
|
1078
3969
|
|
|
@@ -1112,16 +4003,38 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
1112
4003
|
|
|
1113
4004
|
|
|
1114
4005
|
* @example
|
|
1115
|
-
* //
|
|
4006
|
+
* // Find keys in range
|
|
1116
4007
|
* const mm = new TreeMultiMap<number, string>();
|
|
1117
|
-
* mm.add(
|
|
1118
|
-
*
|
|
1119
|
-
*
|
|
4008
|
+
* mm.add(10, 'a');
|
|
4009
|
+
* mm.add(20, 'b');
|
|
4010
|
+
* mm.add(30, 'c');
|
|
4011
|
+
* const result = mm.rangeSearch([15, 25]);
|
|
4012
|
+
* console.log(result.length); // 1;
|
|
1120
4013
|
*/
|
|
1121
|
-
|
|
4014
|
+
rangeSearch<C extends (node: RedBlackTreeNode<K, V[]>) => unknown>(range: Range<K> | [K, K], callback?: C): ReturnType<C>[];
|
|
1122
4015
|
/**
|
|
1123
|
-
*
|
|
1124
|
-
* @remarks Time O(n), Space O(
|
|
4016
|
+
* Creates a shallow clone of this map.
|
|
4017
|
+
* @remarks Time O(n log n), Space O(n)
|
|
4018
|
+
|
|
4019
|
+
|
|
4020
|
+
|
|
4021
|
+
|
|
4022
|
+
|
|
4023
|
+
|
|
4024
|
+
|
|
4025
|
+
|
|
4026
|
+
|
|
4027
|
+
|
|
4028
|
+
|
|
4029
|
+
|
|
4030
|
+
|
|
4031
|
+
|
|
4032
|
+
|
|
4033
|
+
|
|
4034
|
+
|
|
4035
|
+
|
|
4036
|
+
|
|
4037
|
+
|
|
1125
4038
|
|
|
1126
4039
|
|
|
1127
4040
|
|
|
@@ -1160,18 +4073,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
1160
4073
|
|
|
1161
4074
|
|
|
1162
4075
|
|
|
1163
|
-
* @example
|
|
1164
|
-
* // Aggregate
|
|
1165
|
-
* const mm = new TreeMultiMap<number, number>();
|
|
1166
|
-
* mm.add(1, 10);
|
|
1167
|
-
* mm.add(2, 20);
|
|
1168
|
-
* const sum = mm.reduce((acc, v) => acc + v.reduce((a, b) => a + b, 0), 0);
|
|
1169
|
-
* console.log(sum); // 30;
|
|
1170
|
-
*/
|
|
1171
|
-
reduce<U>(callback: (accumulator: U, value: V[], key: K, map: this) => U, initialValue: U): U;
|
|
1172
|
-
/**
|
|
1173
|
-
* Sets multiple entries at once.
|
|
1174
|
-
* @remarks Time O(m log n), Space O(m) where m is input size
|
|
1175
4076
|
|
|
1176
4077
|
|
|
1177
4078
|
|
|
@@ -1202,16 +4103,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
1202
4103
|
|
|
1203
4104
|
|
|
1204
4105
|
|
|
1205
|
-
* @example
|
|
1206
|
-
* // Set multiple entries
|
|
1207
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
1208
|
-
* mm.setMany([[1, ['a']], [2, ['b']]]);
|
|
1209
|
-
* console.log(mm.size); // 2;
|
|
1210
|
-
*/
|
|
1211
|
-
setMany(keysNodesEntriesOrRaws: Iterable<K | [K | null | undefined, V[] | undefined]>): boolean[];
|
|
1212
|
-
/**
|
|
1213
|
-
* Searches for entries within a key range.
|
|
1214
|
-
* @remarks Time O(log n + k), Space O(k) where k is result size
|
|
1215
4106
|
|
|
1216
4107
|
|
|
1217
4108
|
|
|
@@ -1242,19 +4133,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
1242
4133
|
|
|
1243
4134
|
|
|
1244
4135
|
|
|
1245
|
-
* @example
|
|
1246
|
-
* // Find keys in range
|
|
1247
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
1248
|
-
* mm.add(10, 'a');
|
|
1249
|
-
* mm.add(20, 'b');
|
|
1250
|
-
* mm.add(30, 'c');
|
|
1251
|
-
* const result = mm.rangeSearch([15, 25]);
|
|
1252
|
-
* console.log(result.length); // 1;
|
|
1253
|
-
*/
|
|
1254
|
-
rangeSearch<C extends (node: RedBlackTreeNode<K, V[]>) => unknown>(range: Range<K> | [K, K], callback?: C): ReturnType<C>[];
|
|
1255
|
-
/**
|
|
1256
|
-
* Creates a shallow clone of this map.
|
|
1257
|
-
* @remarks Time O(n log n), Space O(n)
|
|
1258
4136
|
|
|
1259
4137
|
|
|
1260
4138
|
|
|
@@ -1294,13 +4172,60 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
1294
4172
|
|
|
1295
4173
|
|
|
1296
4174
|
* @example
|
|
1297
|
-
* //
|
|
1298
|
-
* const
|
|
1299
|
-
*
|
|
1300
|
-
*
|
|
1301
|
-
*
|
|
1302
|
-
* console.log(mm.has(1)); // true;
|
|
4175
|
+
* // Order-statistic on BST
|
|
4176
|
+
* const tree = new TreeMultiMap<number>([30, 10, 50, 20, 40], { enableOrderStatistic: true });
|
|
4177
|
+
* console.log(tree.getByRank(0)); // 10;
|
|
4178
|
+
* console.log(tree.getByRank(4)); // 50;
|
|
4179
|
+
* console.log(tree.getRank(30)); // 2;
|
|
1303
4180
|
*/
|
|
4181
|
+
getByRank(k: number): [K, V[]] | undefined;
|
|
4182
|
+
/**
|
|
4183
|
+
* Get the rank of a key in sorted order
|
|
4184
|
+
* @example
|
|
4185
|
+
* // Get the rank of a key in sorted order
|
|
4186
|
+
* const tree = new TreeMultiMap<number>(
|
|
4187
|
+
* [10, 20, 30, 40, 50],
|
|
4188
|
+
* { enableOrderStatistic: true }
|
|
4189
|
+
* );
|
|
4190
|
+
* console.log(tree.getRank(10)); // 0; // smallest → rank 0
|
|
4191
|
+
* console.log(tree.getRank(30)); // 2; // 2 elements before 30 in tree order
|
|
4192
|
+
* console.log(tree.getRank(50)); // 4; // largest → rank 4
|
|
4193
|
+
* console.log(tree.getRank(25)); // 2;
|
|
4194
|
+
*/
|
|
4195
|
+
getRank(key: K): number;
|
|
4196
|
+
/**
|
|
4197
|
+
* Get elements by rank range
|
|
4198
|
+
|
|
4199
|
+
* @example
|
|
4200
|
+
* // Pagination with rangeByRank
|
|
4201
|
+
* const tree = new TreeMultiMap<number>(
|
|
4202
|
+
* [10, 20, 30, 40, 50, 60, 70, 80, 90],
|
|
4203
|
+
* { enableOrderStatistic: true }
|
|
4204
|
+
* );
|
|
4205
|
+
* const pageSize = 3;
|
|
4206
|
+
*
|
|
4207
|
+
* // Page 1
|
|
4208
|
+
* console.log(tree.rangeByRank(0, pageSize - 1)); // [10, 20, 30];
|
|
4209
|
+
* // Page 2
|
|
4210
|
+
* console.log(tree.rangeByRank(pageSize, 2 * pageSize - 1)); // [40, 50, 60];
|
|
4211
|
+
* // Page 3
|
|
4212
|
+
* console.log(tree.rangeByRank(2 * pageSize, 3 * pageSize - 1)); // [70, 80, 90];
|
|
4213
|
+
*/
|
|
4214
|
+
rangeByRank(start: number, end: number): Array<[K, V[]]>;
|
|
4215
|
+
/**
|
|
4216
|
+
* Deep copy
|
|
4217
|
+
|
|
4218
|
+
|
|
4219
|
+
|
|
4220
|
+
|
|
4221
|
+
* @example
|
|
4222
|
+
* // Deep clone
|
|
4223
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
4224
|
+
* mm.add(1, 'a');
|
|
4225
|
+
* const copy = mm.clone();
|
|
4226
|
+
* copy.delete(1);
|
|
4227
|
+
* console.log(mm.has(1)); // true;
|
|
4228
|
+
*/
|
|
1304
4229
|
clone(): TreeMultiMap<K, V, R>;
|
|
1305
4230
|
/**
|
|
1306
4231
|
* Expose comparator for advanced usage/testing (read-only).
|