binary-tree-typed 2.5.0 → 2.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +609 -0
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs-legacy/index.cjs +609 -0
- package/dist/cjs-legacy/index.cjs.map +1 -1
- package/dist/esm/index.mjs +609 -0
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm-legacy/index.mjs +609 -0
- package/dist/esm-legacy/index.mjs.map +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 +252 -0
- package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +294 -0
- package/dist/types/data-structures/binary-tree/binary-tree.d.ts +527 -2
- package/dist/types/data-structures/binary-tree/bst.d.ts +505 -1
- package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +399 -0
- package/dist/types/data-structures/binary-tree/segment-tree.d.ts +126 -1
- package/dist/types/data-structures/binary-tree/tree-map.d.ts +2881 -382
- package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +2867 -347
- package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +2328 -312
- package/dist/types/data-structures/binary-tree/tree-set.d.ts +2671 -277
- package/dist/types/data-structures/graph/abstract-graph.d.ts +4 -4
- package/dist/types/data-structures/graph/directed-graph.d.ts +210 -0
- package/dist/types/data-structures/graph/undirected-graph.d.ts +189 -0
- package/dist/types/data-structures/hash/hash-map.d.ts +241 -10
- package/dist/types/data-structures/heap/heap.d.ts +294 -0
- package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +360 -3
- package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +318 -3
- package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +380 -2
- package/dist/types/data-structures/matrix/matrix.d.ts +168 -0
- package/dist/types/data-structures/queue/deque.d.ts +319 -4
- package/dist/types/data-structures/queue/queue.d.ts +252 -0
- package/dist/types/data-structures/stack/stack.d.ts +210 -0
- package/dist/types/data-structures/trie/trie.d.ts +256 -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/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 +609 -0
- 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/data-structures/base/index.ts +1 -0
- 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 +252 -0
- package/src/data-structures/binary-tree/binary-indexed-tree.ts +295 -1
- package/src/data-structures/binary-tree/binary-tree.ts +527 -2
- package/src/data-structures/binary-tree/bst.ts +505 -1
- package/src/data-structures/binary-tree/red-black-tree.ts +399 -0
- package/src/data-structures/binary-tree/segment-tree.ts +127 -2
- package/src/data-structures/binary-tree/tree-map.ts +2958 -459
- package/src/data-structures/binary-tree/tree-multi-map.ts +3069 -549
- package/src/data-structures/binary-tree/tree-multi-set.ts +2476 -460
- package/src/data-structures/binary-tree/tree-set.ts +2816 -422
- package/src/data-structures/graph/abstract-graph.ts +4 -4
- package/src/data-structures/graph/directed-graph.ts +210 -0
- package/src/data-structures/graph/undirected-graph.ts +189 -0
- package/src/data-structures/hash/hash-map.ts +246 -15
- package/src/data-structures/heap/heap.ts +294 -0
- package/src/data-structures/linked-list/doubly-linked-list.ts +360 -3
- package/src/data-structures/linked-list/singly-linked-list.ts +318 -3
- package/src/data-structures/linked-list/skip-linked-list.ts +380 -2
- package/src/data-structures/matrix/matrix.ts +169 -1
- package/src/data-structures/queue/deque.ts +320 -5
- package/src/data-structures/queue/queue.ts +252 -0
- package/src/data-structures/stack/stack.ts +210 -0
- package/src/data-structures/trie/trie.ts +257 -5
- package/src/interfaces/graph.ts +1 -1
- package/src/types/common.ts +2 -2
- 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
|
@@ -45,6 +45,27 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
45
45
|
* @remarks Time O(1), Space O(1)
|
|
46
46
|
|
|
47
47
|
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
48
69
|
* @example
|
|
49
70
|
* // Unique key count
|
|
50
71
|
* const ms = new TreeMultiSet<number>();
|
|
@@ -73,6 +94,111 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
73
94
|
|
|
74
95
|
|
|
75
96
|
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
|
|
76
202
|
|
|
77
203
|
|
|
78
204
|
|
|
@@ -143,30 +269,8 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
143
269
|
|
|
144
270
|
|
|
145
271
|
|
|
146
|
-
* @example
|
|
147
|
-
* // Check existence
|
|
148
|
-
* const ms = new TreeMultiSet<number>();
|
|
149
|
-
* ms.add(1);
|
|
150
|
-
* console.log(ms.has(1)); // true;
|
|
151
|
-
* console.log(ms.has(2)); // false;
|
|
152
|
-
*/
|
|
153
|
-
has(key: K): boolean;
|
|
154
|
-
/**
|
|
155
|
-
* Returns the count of occurrences for the given key.
|
|
156
|
-
* @remarks Time O(log n), Space O(1)
|
|
157
272
|
|
|
158
273
|
|
|
159
|
-
* @example
|
|
160
|
-
* // Get occurrence count
|
|
161
|
-
* const ms = new TreeMultiSet<number>();
|
|
162
|
-
* ms.add(1, 5);
|
|
163
|
-
* console.log(ms.count(1)); // 5;
|
|
164
|
-
*/
|
|
165
|
-
count(key: K): number;
|
|
166
|
-
/**
|
|
167
|
-
* Add `n` occurrences of `key`.
|
|
168
|
-
* @returns True if the multiset changed.
|
|
169
|
-
* @remarks Time O(log n), Space O(1)
|
|
170
274
|
|
|
171
275
|
|
|
172
276
|
|
|
@@ -199,33 +303,8 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
199
303
|
|
|
200
304
|
|
|
201
305
|
|
|
202
|
-
* @example
|
|
203
|
-
* // Add elements
|
|
204
|
-
* const ms = new TreeMultiSet<number>();
|
|
205
|
-
* ms.add(1);
|
|
206
|
-
* ms.add(1);
|
|
207
|
-
* ms.add(2);
|
|
208
|
-
* console.log(ms.count(1)); // 2;
|
|
209
|
-
* console.log(ms.size); // 3;
|
|
210
|
-
*/
|
|
211
|
-
add(key: K, n?: number): boolean;
|
|
212
|
-
/**
|
|
213
|
-
* Set count for `key` to exactly `n`.
|
|
214
|
-
* @returns True if changed.
|
|
215
|
-
* @remarks Time O(log n), Space O(1)
|
|
216
306
|
|
|
217
307
|
|
|
218
|
-
* @example
|
|
219
|
-
* // Set occurrence count
|
|
220
|
-
* const ms = new TreeMultiSet<number>();
|
|
221
|
-
* ms.setCount(1, 3);
|
|
222
|
-
* console.log(ms.count(1)); // 3;
|
|
223
|
-
*/
|
|
224
|
-
setCount(key: K, n: number): boolean;
|
|
225
|
-
/**
|
|
226
|
-
* Delete `n` occurrences of `key` (default 1).
|
|
227
|
-
* @returns True if any occurrence was removed.
|
|
228
|
-
* @remarks Time O(log n), Space O(1)
|
|
229
308
|
|
|
230
309
|
|
|
231
310
|
|
|
@@ -267,44 +346,10 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
267
346
|
|
|
268
347
|
|
|
269
348
|
|
|
270
|
-
* @example
|
|
271
|
-
* // Remove one occurrence
|
|
272
|
-
* const ms = new TreeMultiSet<number>();
|
|
273
|
-
* ms.add(1, 3);
|
|
274
|
-
* ms.delete(1);
|
|
275
|
-
* console.log(ms.count(1)); // 2;
|
|
276
|
-
*/
|
|
277
|
-
delete(key: K, n?: number): boolean;
|
|
278
|
-
/**
|
|
279
|
-
* Delete all occurrences of the given key.
|
|
280
|
-
* @returns True if any occurrence was removed.
|
|
281
|
-
* @remarks Time O(log n), Space O(1)
|
|
282
349
|
|
|
283
350
|
|
|
284
|
-
* @example
|
|
285
|
-
* // Remove all occurrences
|
|
286
|
-
* const ms = new TreeMultiSet<number>();
|
|
287
|
-
* ms.add(1, 3);
|
|
288
|
-
* ms.deleteAll(1);
|
|
289
|
-
* console.log(ms.has(1)); // false;
|
|
290
|
-
*/
|
|
291
|
-
deleteAll(key: K): boolean;
|
|
292
|
-
/**
|
|
293
|
-
* Iterates over distinct keys (each key yielded once).
|
|
294
|
-
* @remarks Time O(n), Space O(1)
|
|
295
351
|
|
|
296
352
|
|
|
297
|
-
* @example
|
|
298
|
-
* // Iterate unique keys
|
|
299
|
-
* const ms = new TreeMultiSet<number>();
|
|
300
|
-
* ms.add(1, 2);
|
|
301
|
-
* ms.add(2);
|
|
302
|
-
* console.log([...ms.keysDistinct()]); // [1, 2];
|
|
303
|
-
*/
|
|
304
|
-
keysDistinct(): IterableIterator<K>;
|
|
305
|
-
/**
|
|
306
|
-
* Iterates over entries as [key, count] pairs.
|
|
307
|
-
* @remarks Time O(n), Space O(1)
|
|
308
353
|
|
|
309
354
|
|
|
310
355
|
|
|
@@ -322,6 +367,26 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
322
367
|
|
|
323
368
|
|
|
324
369
|
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
* @example
|
|
378
|
+
* // Check existence
|
|
379
|
+
* const ms = new TreeMultiSet<number>();
|
|
380
|
+
* ms.add(1);
|
|
381
|
+
* console.log(ms.has(1)); // true;
|
|
382
|
+
* console.log(ms.has(2)); // false;
|
|
383
|
+
*/
|
|
384
|
+
has(key: K): boolean;
|
|
385
|
+
/**
|
|
386
|
+
* Returns the count of occurrences for the given key.
|
|
387
|
+
* @remarks Time O(log n), Space O(1)
|
|
388
|
+
|
|
389
|
+
|
|
325
390
|
|
|
326
391
|
|
|
327
392
|
|
|
@@ -344,20 +409,2145 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
344
409
|
|
|
345
410
|
|
|
346
411
|
* @example
|
|
347
|
-
* //
|
|
412
|
+
* // Get occurrence count
|
|
348
413
|
* const ms = new TreeMultiSet<number>();
|
|
349
|
-
* ms.add(1,
|
|
350
|
-
* console.log(
|
|
351
|
-
*/
|
|
352
|
-
entries(): IterableIterator<[K, number]>;
|
|
353
|
-
/**
|
|
354
|
-
* Expanded iteration (default). Each key is yielded `count(key)` times.
|
|
355
|
-
* @remarks Time O(size), Space O(1) where size is total occurrences
|
|
414
|
+
* ms.add(1, 5);
|
|
415
|
+
* console.log(ms.count(1)); // 5;
|
|
356
416
|
*/
|
|
357
|
-
|
|
417
|
+
count(key: K): number;
|
|
358
418
|
/**
|
|
359
|
-
*
|
|
360
|
-
* @
|
|
419
|
+
* Add `n` occurrences of `key`.
|
|
420
|
+
* @returns True if the multiset changed.
|
|
421
|
+
* @remarks Time O(log n), Space O(1)
|
|
422
|
+
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
|
|
447
|
+
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
|
|
451
|
+
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
|
|
461
|
+
|
|
462
|
+
|
|
463
|
+
|
|
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
|
+
* @example
|
|
560
|
+
* // Add elements
|
|
561
|
+
* const ms = new TreeMultiSet<number>();
|
|
562
|
+
* ms.add(1);
|
|
563
|
+
* ms.add(1);
|
|
564
|
+
* ms.add(2);
|
|
565
|
+
* console.log(ms.count(1)); // 2;
|
|
566
|
+
* console.log(ms.size); // 3;
|
|
567
|
+
*/
|
|
568
|
+
add(key: K, n?: number): boolean;
|
|
569
|
+
/**
|
|
570
|
+
* Set count for `key` to exactly `n`.
|
|
571
|
+
* @returns True if changed.
|
|
572
|
+
* @remarks Time O(log n), Space O(1)
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
|
|
576
|
+
|
|
577
|
+
|
|
578
|
+
|
|
579
|
+
|
|
580
|
+
|
|
581
|
+
|
|
582
|
+
|
|
583
|
+
|
|
584
|
+
|
|
585
|
+
|
|
586
|
+
|
|
587
|
+
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
|
|
591
|
+
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
|
|
595
|
+
|
|
596
|
+
* @example
|
|
597
|
+
* // Set occurrence count
|
|
598
|
+
* const ms = new TreeMultiSet<number>();
|
|
599
|
+
* ms.setCount(1, 3);
|
|
600
|
+
* console.log(ms.count(1)); // 3;
|
|
601
|
+
*/
|
|
602
|
+
setCount(key: K, n: number): boolean;
|
|
603
|
+
/**
|
|
604
|
+
* Delete `n` occurrences of `key` (default 1).
|
|
605
|
+
* @returns True if any occurrence was removed.
|
|
606
|
+
* @remarks Time O(log n), Space O(1)
|
|
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
|
+
|
|
661
|
+
|
|
662
|
+
|
|
663
|
+
|
|
664
|
+
|
|
665
|
+
|
|
666
|
+
|
|
667
|
+
|
|
668
|
+
|
|
669
|
+
|
|
670
|
+
|
|
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
|
+
* @example
|
|
754
|
+
* // Remove one occurrence
|
|
755
|
+
* const ms = new TreeMultiSet<number>();
|
|
756
|
+
* ms.add(1, 3);
|
|
757
|
+
* ms.delete(1);
|
|
758
|
+
* console.log(ms.count(1)); // 2;
|
|
759
|
+
*/
|
|
760
|
+
delete(key: K, n?: number): boolean;
|
|
761
|
+
/**
|
|
762
|
+
* Delete all occurrences of the given key.
|
|
763
|
+
* @returns True if any occurrence was removed.
|
|
764
|
+
* @remarks Time O(log n), Space O(1)
|
|
765
|
+
|
|
766
|
+
|
|
767
|
+
|
|
768
|
+
|
|
769
|
+
|
|
770
|
+
|
|
771
|
+
|
|
772
|
+
|
|
773
|
+
|
|
774
|
+
|
|
775
|
+
|
|
776
|
+
|
|
777
|
+
|
|
778
|
+
|
|
779
|
+
|
|
780
|
+
|
|
781
|
+
|
|
782
|
+
|
|
783
|
+
|
|
784
|
+
|
|
785
|
+
|
|
786
|
+
|
|
787
|
+
|
|
788
|
+
* @example
|
|
789
|
+
* // Remove all occurrences
|
|
790
|
+
* const ms = new TreeMultiSet<number>();
|
|
791
|
+
* ms.add(1, 3);
|
|
792
|
+
* ms.deleteAll(1);
|
|
793
|
+
* console.log(ms.has(1)); // false;
|
|
794
|
+
*/
|
|
795
|
+
deleteAll(key: K): boolean;
|
|
796
|
+
/**
|
|
797
|
+
* Iterates over distinct keys (each key yielded once).
|
|
798
|
+
* @remarks Time O(n), Space O(1)
|
|
799
|
+
|
|
800
|
+
|
|
801
|
+
|
|
802
|
+
|
|
803
|
+
|
|
804
|
+
|
|
805
|
+
|
|
806
|
+
|
|
807
|
+
|
|
808
|
+
|
|
809
|
+
|
|
810
|
+
|
|
811
|
+
|
|
812
|
+
|
|
813
|
+
|
|
814
|
+
|
|
815
|
+
|
|
816
|
+
|
|
817
|
+
|
|
818
|
+
|
|
819
|
+
|
|
820
|
+
|
|
821
|
+
|
|
822
|
+
* @example
|
|
823
|
+
* // Iterate unique keys
|
|
824
|
+
* const ms = new TreeMultiSet<number>();
|
|
825
|
+
* ms.add(1, 2);
|
|
826
|
+
* ms.add(2);
|
|
827
|
+
* console.log([...ms.keysDistinct()]); // [1, 2];
|
|
828
|
+
*/
|
|
829
|
+
keysDistinct(): IterableIterator<K>;
|
|
830
|
+
/**
|
|
831
|
+
* Iterates over entries as [key, count] pairs.
|
|
832
|
+
* @remarks Time O(n), Space O(1)
|
|
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
|
+
|
|
868
|
+
|
|
869
|
+
|
|
870
|
+
|
|
871
|
+
|
|
872
|
+
|
|
873
|
+
|
|
874
|
+
|
|
875
|
+
|
|
876
|
+
|
|
877
|
+
|
|
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
|
+
* @example
|
|
977
|
+
* // Iterate entries
|
|
978
|
+
* const ms = new TreeMultiSet<number>();
|
|
979
|
+
* ms.add(1, 2);
|
|
980
|
+
* console.log([...ms.entries()].length); // > 0;
|
|
981
|
+
*/
|
|
982
|
+
entries(): IterableIterator<[K, number]>;
|
|
983
|
+
/**
|
|
984
|
+
* Expanded iteration (default). Each key is yielded `count(key)` times.
|
|
985
|
+
* @remarks Time O(size), Space O(1) where size is total occurrences
|
|
986
|
+
*/
|
|
987
|
+
[Symbol.iterator](): Iterator<K>;
|
|
988
|
+
/**
|
|
989
|
+
* Returns an array with all elements (expanded).
|
|
990
|
+
* @remarks Time O(size), Space O(size)
|
|
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
|
+
|
|
1031
|
+
|
|
1032
|
+
|
|
1033
|
+
|
|
1034
|
+
|
|
1035
|
+
|
|
1036
|
+
|
|
1037
|
+
|
|
1038
|
+
|
|
1039
|
+
|
|
1040
|
+
|
|
1041
|
+
|
|
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
|
+
* @example
|
|
1135
|
+
* // All elements (with duplicates)
|
|
1136
|
+
* const ms = new TreeMultiSet<number>();
|
|
1137
|
+
* ms.add(1, 2);
|
|
1138
|
+
* ms.add(2);
|
|
1139
|
+
* console.log(ms.toArray()); // [1, 1, 2];
|
|
1140
|
+
*/
|
|
1141
|
+
toArray(): K[];
|
|
1142
|
+
/**
|
|
1143
|
+
* Returns an array with distinct keys only.
|
|
1144
|
+
* @remarks Time O(n), Space O(n)
|
|
1145
|
+
|
|
1146
|
+
|
|
1147
|
+
|
|
1148
|
+
|
|
1149
|
+
|
|
1150
|
+
|
|
1151
|
+
|
|
1152
|
+
|
|
1153
|
+
|
|
1154
|
+
|
|
1155
|
+
|
|
1156
|
+
|
|
1157
|
+
|
|
1158
|
+
|
|
1159
|
+
|
|
1160
|
+
|
|
1161
|
+
|
|
1162
|
+
|
|
1163
|
+
|
|
1164
|
+
|
|
1165
|
+
|
|
1166
|
+
|
|
1167
|
+
|
|
1168
|
+
* @example
|
|
1169
|
+
* // Unique keys only
|
|
1170
|
+
* const ms = new TreeMultiSet<number>();
|
|
1171
|
+
* ms.add(1, 3);
|
|
1172
|
+
* ms.add(2);
|
|
1173
|
+
* console.log(ms.toDistinctArray()); // [1, 2];
|
|
1174
|
+
*/
|
|
1175
|
+
toDistinctArray(): K[];
|
|
1176
|
+
/**
|
|
1177
|
+
* Returns an array of [key, count] entries.
|
|
1178
|
+
* @remarks Time O(n), Space O(n)
|
|
1179
|
+
|
|
1180
|
+
|
|
1181
|
+
|
|
1182
|
+
|
|
1183
|
+
|
|
1184
|
+
|
|
1185
|
+
|
|
1186
|
+
|
|
1187
|
+
|
|
1188
|
+
|
|
1189
|
+
|
|
1190
|
+
|
|
1191
|
+
|
|
1192
|
+
|
|
1193
|
+
|
|
1194
|
+
|
|
1195
|
+
|
|
1196
|
+
|
|
1197
|
+
|
|
1198
|
+
|
|
1199
|
+
|
|
1200
|
+
|
|
1201
|
+
|
|
1202
|
+
* @example
|
|
1203
|
+
* // Key-count pairs
|
|
1204
|
+
* const ms = new TreeMultiSet<number>();
|
|
1205
|
+
* ms.add(1, 2);
|
|
1206
|
+
* ms.add(3);
|
|
1207
|
+
* console.log(ms.toEntries()); // [[1, 2], [3, 1]];
|
|
1208
|
+
*/
|
|
1209
|
+
toEntries(): Array<[K, number]>;
|
|
1210
|
+
/**
|
|
1211
|
+
* Expose comparator for advanced usage/testing (read-only).
|
|
1212
|
+
* @remarks Time O(1), Space O(1)
|
|
1213
|
+
*/
|
|
1214
|
+
get comparator(): Comparator<K>;
|
|
1215
|
+
/**
|
|
1216
|
+
* Remove all elements from the multiset.
|
|
1217
|
+
* @remarks Time O(1), Space O(1)
|
|
1218
|
+
|
|
1219
|
+
|
|
1220
|
+
|
|
1221
|
+
|
|
1222
|
+
|
|
1223
|
+
|
|
1224
|
+
|
|
1225
|
+
|
|
1226
|
+
|
|
1227
|
+
|
|
1228
|
+
|
|
1229
|
+
|
|
1230
|
+
|
|
1231
|
+
|
|
1232
|
+
|
|
1233
|
+
|
|
1234
|
+
|
|
1235
|
+
|
|
1236
|
+
|
|
1237
|
+
|
|
1238
|
+
|
|
1239
|
+
|
|
1240
|
+
|
|
1241
|
+
|
|
1242
|
+
|
|
1243
|
+
|
|
1244
|
+
|
|
1245
|
+
|
|
1246
|
+
|
|
1247
|
+
|
|
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
|
+
* @example
|
|
1363
|
+
* // Remove all
|
|
1364
|
+
* const ms = new TreeMultiSet<number>();
|
|
1365
|
+
* ms.add(1);
|
|
1366
|
+
* ms.clear();
|
|
1367
|
+
* console.log(ms.isEmpty()); // true;
|
|
1368
|
+
*/
|
|
1369
|
+
clear(): void;
|
|
1370
|
+
/**
|
|
1371
|
+
* Returns the smallest key, or undefined if empty.
|
|
1372
|
+
* @remarks Time O(log n), Space O(1)
|
|
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
|
+
* @example
|
|
1398
|
+
* // Smallest element
|
|
1399
|
+
* const ms = new TreeMultiSet<number>();
|
|
1400
|
+
* ms.add(3);
|
|
1401
|
+
* ms.add(1);
|
|
1402
|
+
* console.log(ms.first()); // 1;
|
|
1403
|
+
*/
|
|
1404
|
+
first(): K | undefined;
|
|
1405
|
+
/**
|
|
1406
|
+
* Returns the largest key, or undefined if empty.
|
|
1407
|
+
* @remarks Time O(log n), Space O(1)
|
|
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
|
+
* @example
|
|
1433
|
+
* // Largest element
|
|
1434
|
+
* const ms = new TreeMultiSet<number>();
|
|
1435
|
+
* ms.add(1);
|
|
1436
|
+
* ms.add(3);
|
|
1437
|
+
* console.log(ms.last()); // 3;
|
|
1438
|
+
*/
|
|
1439
|
+
last(): K | undefined;
|
|
1440
|
+
/**
|
|
1441
|
+
* Removes all occurrences of the smallest key and returns it.
|
|
1442
|
+
* @remarks Time O(log n), Space O(1)
|
|
1443
|
+
|
|
1444
|
+
|
|
1445
|
+
|
|
1446
|
+
|
|
1447
|
+
|
|
1448
|
+
|
|
1449
|
+
|
|
1450
|
+
|
|
1451
|
+
|
|
1452
|
+
|
|
1453
|
+
|
|
1454
|
+
|
|
1455
|
+
|
|
1456
|
+
|
|
1457
|
+
|
|
1458
|
+
|
|
1459
|
+
|
|
1460
|
+
|
|
1461
|
+
|
|
1462
|
+
|
|
1463
|
+
|
|
1464
|
+
|
|
1465
|
+
|
|
1466
|
+
|
|
1467
|
+
* @example
|
|
1468
|
+
* // Remove and return smallest
|
|
1469
|
+
* const ms = new TreeMultiSet<number>();
|
|
1470
|
+
* ms.add(2);
|
|
1471
|
+
* ms.add(1);
|
|
1472
|
+
* console.log(ms.pollFirst()); // 1;
|
|
1473
|
+
* console.log(ms.has(1)); // false;
|
|
1474
|
+
*/
|
|
1475
|
+
pollFirst(): K | undefined;
|
|
1476
|
+
/**
|
|
1477
|
+
* Removes all occurrences of the largest key and returns it.
|
|
1478
|
+
* @remarks Time O(log n), Space O(1)
|
|
1479
|
+
|
|
1480
|
+
|
|
1481
|
+
|
|
1482
|
+
|
|
1483
|
+
|
|
1484
|
+
|
|
1485
|
+
|
|
1486
|
+
|
|
1487
|
+
|
|
1488
|
+
|
|
1489
|
+
|
|
1490
|
+
|
|
1491
|
+
|
|
1492
|
+
|
|
1493
|
+
|
|
1494
|
+
|
|
1495
|
+
|
|
1496
|
+
|
|
1497
|
+
|
|
1498
|
+
|
|
1499
|
+
|
|
1500
|
+
|
|
1501
|
+
|
|
1502
|
+
|
|
1503
|
+
* @example
|
|
1504
|
+
* // Remove and return largest
|
|
1505
|
+
* const ms = new TreeMultiSet<number>();
|
|
1506
|
+
* ms.add(1);
|
|
1507
|
+
* ms.add(3);
|
|
1508
|
+
* console.log(ms.pollLast()); // 3;
|
|
1509
|
+
*/
|
|
1510
|
+
pollLast(): K | undefined;
|
|
1511
|
+
/**
|
|
1512
|
+
* Returns the smallest key >= given key, or undefined.
|
|
1513
|
+
* @remarks Time O(log n), Space O(1)
|
|
1514
|
+
|
|
1515
|
+
|
|
1516
|
+
|
|
1517
|
+
|
|
1518
|
+
|
|
1519
|
+
|
|
1520
|
+
|
|
1521
|
+
|
|
1522
|
+
|
|
1523
|
+
|
|
1524
|
+
|
|
1525
|
+
|
|
1526
|
+
|
|
1527
|
+
|
|
1528
|
+
|
|
1529
|
+
|
|
1530
|
+
|
|
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
|
+
|
|
1558
|
+
|
|
1559
|
+
|
|
1560
|
+
|
|
1561
|
+
|
|
1562
|
+
|
|
1563
|
+
|
|
1564
|
+
|
|
1565
|
+
|
|
1566
|
+
|
|
1567
|
+
|
|
1568
|
+
|
|
1569
|
+
|
|
1570
|
+
|
|
1571
|
+
|
|
1572
|
+
|
|
1573
|
+
|
|
1574
|
+
|
|
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
|
+
* @example
|
|
1629
|
+
* // Least key ≥ target
|
|
1630
|
+
* const ms = new TreeMultiSet<number>();
|
|
1631
|
+
* ms.add(10);
|
|
1632
|
+
* ms.add(20);
|
|
1633
|
+
* ms.add(30);
|
|
1634
|
+
* console.log(ms.ceiling(15)); // 20;
|
|
1635
|
+
*/
|
|
1636
|
+
ceiling(key: K): K | undefined;
|
|
1637
|
+
/**
|
|
1638
|
+
* Returns the largest key <= given key, or undefined.
|
|
1639
|
+
* @remarks Time O(log n), Space O(1)
|
|
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
|
+
|
|
1734
|
+
|
|
1735
|
+
|
|
1736
|
+
|
|
1737
|
+
|
|
1738
|
+
|
|
1739
|
+
|
|
1740
|
+
|
|
1741
|
+
|
|
1742
|
+
|
|
1743
|
+
|
|
1744
|
+
|
|
1745
|
+
|
|
1746
|
+
|
|
1747
|
+
|
|
1748
|
+
|
|
1749
|
+
|
|
1750
|
+
|
|
1751
|
+
|
|
1752
|
+
|
|
1753
|
+
|
|
1754
|
+
* @example
|
|
1755
|
+
* // Greatest key ≤ target
|
|
1756
|
+
* const ms = new TreeMultiSet<number>();
|
|
1757
|
+
* ms.add(10);
|
|
1758
|
+
* ms.add(20);
|
|
1759
|
+
* ms.add(30);
|
|
1760
|
+
* console.log(ms.floor(25)); // 20;
|
|
1761
|
+
*/
|
|
1762
|
+
floor(key: K): K | undefined;
|
|
1763
|
+
/**
|
|
1764
|
+
* Returns the smallest key > given key, or undefined.
|
|
1765
|
+
* @remarks Time O(log n), Space O(1)
|
|
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
|
+
* @example
|
|
1881
|
+
* // Least key > target
|
|
1882
|
+
* const ms = new TreeMultiSet<number>();
|
|
1883
|
+
* ms.add(10);
|
|
1884
|
+
* ms.add(20);
|
|
1885
|
+
* console.log(ms.higher(10)); // 20;
|
|
1886
|
+
*/
|
|
1887
|
+
higher(key: K): K | undefined;
|
|
1888
|
+
/**
|
|
1889
|
+
* Returns the largest key < given key, or undefined.
|
|
1890
|
+
* @remarks Time O(log n), Space O(1)
|
|
1891
|
+
|
|
1892
|
+
|
|
1893
|
+
|
|
1894
|
+
|
|
1895
|
+
|
|
1896
|
+
|
|
1897
|
+
|
|
1898
|
+
|
|
1899
|
+
|
|
1900
|
+
|
|
1901
|
+
|
|
1902
|
+
|
|
1903
|
+
|
|
1904
|
+
|
|
1905
|
+
|
|
1906
|
+
|
|
1907
|
+
|
|
1908
|
+
|
|
1909
|
+
|
|
1910
|
+
|
|
1911
|
+
|
|
1912
|
+
|
|
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
|
+
|
|
1940
|
+
|
|
1941
|
+
|
|
1942
|
+
|
|
1943
|
+
|
|
1944
|
+
|
|
1945
|
+
|
|
1946
|
+
|
|
1947
|
+
|
|
1948
|
+
|
|
1949
|
+
|
|
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
|
+
|
|
1977
|
+
|
|
1978
|
+
|
|
1979
|
+
|
|
1980
|
+
|
|
1981
|
+
|
|
1982
|
+
|
|
1983
|
+
|
|
1984
|
+
|
|
1985
|
+
|
|
1986
|
+
|
|
1987
|
+
|
|
1988
|
+
|
|
1989
|
+
|
|
1990
|
+
|
|
1991
|
+
|
|
1992
|
+
|
|
1993
|
+
|
|
1994
|
+
|
|
1995
|
+
|
|
1996
|
+
|
|
1997
|
+
|
|
1998
|
+
|
|
1999
|
+
|
|
2000
|
+
|
|
2001
|
+
|
|
2002
|
+
|
|
2003
|
+
|
|
2004
|
+
|
|
2005
|
+
* @example
|
|
2006
|
+
* // Greatest key < target
|
|
2007
|
+
* const ms = new TreeMultiSet<number>();
|
|
2008
|
+
* ms.add(10);
|
|
2009
|
+
* ms.add(20);
|
|
2010
|
+
* console.log(ms.lower(20)); // 10;
|
|
2011
|
+
*/
|
|
2012
|
+
lower(key: K): K | undefined;
|
|
2013
|
+
/**
|
|
2014
|
+
* Iterates over distinct keys with their counts.
|
|
2015
|
+
* @remarks Time O(n), Space O(1)
|
|
2016
|
+
|
|
2017
|
+
|
|
2018
|
+
|
|
2019
|
+
|
|
2020
|
+
|
|
2021
|
+
|
|
2022
|
+
|
|
2023
|
+
|
|
2024
|
+
|
|
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
|
+
|
|
2088
|
+
|
|
2089
|
+
|
|
2090
|
+
|
|
2091
|
+
|
|
2092
|
+
|
|
2093
|
+
|
|
2094
|
+
|
|
2095
|
+
|
|
2096
|
+
|
|
2097
|
+
|
|
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
|
+
* // Iterate
|
|
2162
|
+
* const ms = new TreeMultiSet<number>();
|
|
2163
|
+
* ms.add(1, 2);
|
|
2164
|
+
* ms.add(2);
|
|
2165
|
+
* const pairs: [number, number][] = [];
|
|
2166
|
+
* ms.forEach((k, c) => pairs.push([k, c]));
|
|
2167
|
+
* console.log(pairs); // [[1, 2], [2, 1]];
|
|
2168
|
+
*/
|
|
2169
|
+
forEach(callback: (key: K, count: number) => void): void;
|
|
2170
|
+
/**
|
|
2171
|
+
* Creates a new TreeMultiSet with entries that match the predicate.
|
|
2172
|
+
* @remarks Time O(n log n), Space O(n)
|
|
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
|
+
|
|
2199
|
+
|
|
2200
|
+
|
|
2201
|
+
|
|
2202
|
+
|
|
2203
|
+
|
|
2204
|
+
|
|
2205
|
+
|
|
2206
|
+
|
|
2207
|
+
|
|
2208
|
+
|
|
2209
|
+
|
|
2210
|
+
|
|
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
|
+
|
|
2239
|
+
|
|
2240
|
+
|
|
2241
|
+
|
|
2242
|
+
|
|
2243
|
+
|
|
2244
|
+
|
|
2245
|
+
|
|
2246
|
+
|
|
2247
|
+
|
|
2248
|
+
|
|
2249
|
+
|
|
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
|
+
* @example
|
|
2318
|
+
* // Filter
|
|
2319
|
+
* const ms = new TreeMultiSet<number>();
|
|
2320
|
+
* ms.add(1, 3);
|
|
2321
|
+
* ms.add(2, 1);
|
|
2322
|
+
* ms.add(3, 2);
|
|
2323
|
+
* const filtered = ms.filter((k, c) => c > 1);
|
|
2324
|
+
* console.log([...filtered.keysDistinct()]); // [1, 3];
|
|
2325
|
+
*/
|
|
2326
|
+
filter(predicate: (key: K, count: number) => boolean): TreeMultiSet<K>;
|
|
2327
|
+
/**
|
|
2328
|
+
* Reduces the multiset to a single value.
|
|
2329
|
+
* @remarks Time O(n), Space O(1)
|
|
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
|
+
|
|
2412
|
+
|
|
2413
|
+
|
|
2414
|
+
|
|
2415
|
+
|
|
2416
|
+
|
|
2417
|
+
|
|
2418
|
+
|
|
2419
|
+
|
|
2420
|
+
|
|
2421
|
+
|
|
2422
|
+
|
|
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
|
+
* @example
|
|
2475
|
+
* // Aggregate
|
|
2476
|
+
* const ms = new TreeMultiSet<number>();
|
|
2477
|
+
* ms.add(1, 2);
|
|
2478
|
+
* ms.add(2, 3);
|
|
2479
|
+
* const sum = ms.reduce((acc, k, c) => acc + k * c, 0);
|
|
2480
|
+
* console.log(sum); // 8;
|
|
2481
|
+
*/
|
|
2482
|
+
reduce<U>(callback: (accumulator: U, key: K, count: number) => U, initialValue: U): U;
|
|
2483
|
+
/**
|
|
2484
|
+
* Maps keys and counts to a new TreeMultiSet.
|
|
2485
|
+
* When multiple keys map to the same new key, counts are merged (added).
|
|
2486
|
+
* @remarks Time O(n log n), Space O(n)
|
|
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
|
+
|
|
361
2551
|
|
|
362
2552
|
|
|
363
2553
|
|
|
@@ -396,49 +2586,10 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
396
2586
|
|
|
397
2587
|
|
|
398
2588
|
|
|
399
|
-
* @example
|
|
400
|
-
* // All elements (with duplicates)
|
|
401
|
-
* const ms = new TreeMultiSet<number>();
|
|
402
|
-
* ms.add(1, 2);
|
|
403
|
-
* ms.add(2);
|
|
404
|
-
* console.log(ms.toArray()); // [1, 1, 2];
|
|
405
|
-
*/
|
|
406
|
-
toArray(): K[];
|
|
407
|
-
/**
|
|
408
|
-
* Returns an array with distinct keys only.
|
|
409
|
-
* @remarks Time O(n), Space O(n)
|
|
410
2589
|
|
|
411
2590
|
|
|
412
|
-
* @example
|
|
413
|
-
* // Unique keys only
|
|
414
|
-
* const ms = new TreeMultiSet<number>();
|
|
415
|
-
* ms.add(1, 3);
|
|
416
|
-
* ms.add(2);
|
|
417
|
-
* console.log(ms.toDistinctArray()); // [1, 2];
|
|
418
|
-
*/
|
|
419
|
-
toDistinctArray(): K[];
|
|
420
|
-
/**
|
|
421
|
-
* Returns an array of [key, count] entries.
|
|
422
|
-
* @remarks Time O(n), Space O(n)
|
|
423
2591
|
|
|
424
2592
|
|
|
425
|
-
* @example
|
|
426
|
-
* // Key-count pairs
|
|
427
|
-
* const ms = new TreeMultiSet<number>();
|
|
428
|
-
* ms.add(1, 2);
|
|
429
|
-
* ms.add(3);
|
|
430
|
-
* console.log(ms.toEntries()); // [[1, 2], [3, 1]];
|
|
431
|
-
*/
|
|
432
|
-
toEntries(): Array<[K, number]>;
|
|
433
|
-
/**
|
|
434
|
-
* Expose comparator for advanced usage/testing (read-only).
|
|
435
|
-
* @remarks Time O(1), Space O(1)
|
|
436
|
-
*/
|
|
437
|
-
get comparator(): Comparator<K>;
|
|
438
|
-
/**
|
|
439
|
-
* Remove all elements from the multiset.
|
|
440
|
-
* @remarks Time O(1), Space O(1)
|
|
441
|
-
|
|
442
2593
|
|
|
443
2594
|
|
|
444
2595
|
|
|
@@ -478,74 +2629,28 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
478
2629
|
|
|
479
2630
|
|
|
480
2631
|
* @example
|
|
481
|
-
* //
|
|
2632
|
+
* // Transform
|
|
482
2633
|
* const ms = new TreeMultiSet<number>();
|
|
483
|
-
* ms.add(1);
|
|
484
|
-
* ms.
|
|
485
|
-
*
|
|
2634
|
+
* ms.add(1, 2);
|
|
2635
|
+
* ms.add(2, 3);
|
|
2636
|
+
* const doubled = ms.map((k, c) => [k * 10, c] as [number, number]);
|
|
2637
|
+
* console.log([...doubled.keysDistinct()]); // [10, 20];
|
|
486
2638
|
*/
|
|
487
|
-
|
|
2639
|
+
map<K2>(mapper: (key: K, count: number) => [K2, number], options?: {
|
|
2640
|
+
comparator?: Comparator<K2>;
|
|
2641
|
+
}): TreeMultiSet<K2>;
|
|
488
2642
|
/**
|
|
489
|
-
*
|
|
490
|
-
* @remarks Time O(log n), Space O(
|
|
2643
|
+
* Creates an independent copy of this multiset.
|
|
2644
|
+
* @remarks Time O(n log n), Space O(n)
|
|
491
2645
|
|
|
492
2646
|
|
|
493
2647
|
|
|
494
|
-
* @example
|
|
495
|
-
* // Smallest element
|
|
496
|
-
* const ms = new TreeMultiSet<number>();
|
|
497
|
-
* ms.add(3);
|
|
498
|
-
* ms.add(1);
|
|
499
|
-
* console.log(ms.first()); // 1;
|
|
500
|
-
*/
|
|
501
|
-
first(): K | undefined;
|
|
502
|
-
/**
|
|
503
|
-
* Returns the largest key, or undefined if empty.
|
|
504
|
-
* @remarks Time O(log n), Space O(1)
|
|
505
|
-
|
|
506
2648
|
|
|
507
2649
|
|
|
508
|
-
* @example
|
|
509
|
-
* // Largest element
|
|
510
|
-
* const ms = new TreeMultiSet<number>();
|
|
511
|
-
* ms.add(1);
|
|
512
|
-
* ms.add(3);
|
|
513
|
-
* console.log(ms.last()); // 3;
|
|
514
|
-
*/
|
|
515
|
-
last(): K | undefined;
|
|
516
|
-
/**
|
|
517
|
-
* Removes all occurrences of the smallest key and returns it.
|
|
518
|
-
* @remarks Time O(log n), Space O(1)
|
|
519
|
-
|
|
520
2650
|
|
|
521
2651
|
|
|
522
|
-
* @example
|
|
523
|
-
* // Remove and return smallest
|
|
524
|
-
* const ms = new TreeMultiSet<number>();
|
|
525
|
-
* ms.add(2);
|
|
526
|
-
* ms.add(1);
|
|
527
|
-
* console.log(ms.pollFirst()); // 1;
|
|
528
|
-
* console.log(ms.has(1)); // false;
|
|
529
|
-
*/
|
|
530
|
-
pollFirst(): K | undefined;
|
|
531
|
-
/**
|
|
532
|
-
* Removes all occurrences of the largest key and returns it.
|
|
533
|
-
* @remarks Time O(log n), Space O(1)
|
|
534
|
-
|
|
535
2652
|
|
|
536
2653
|
|
|
537
|
-
* @example
|
|
538
|
-
* // Remove and return largest
|
|
539
|
-
* const ms = new TreeMultiSet<number>();
|
|
540
|
-
* ms.add(1);
|
|
541
|
-
* ms.add(3);
|
|
542
|
-
* console.log(ms.pollLast()); // 3;
|
|
543
|
-
*/
|
|
544
|
-
pollLast(): K | undefined;
|
|
545
|
-
/**
|
|
546
|
-
* Returns the smallest key >= given key, or undefined.
|
|
547
|
-
* @remarks Time O(log n), Space O(1)
|
|
548
|
-
|
|
549
2654
|
|
|
550
2655
|
|
|
551
2656
|
|
|
@@ -575,19 +2680,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
575
2680
|
|
|
576
2681
|
|
|
577
2682
|
|
|
578
|
-
* @example
|
|
579
|
-
* // Least key ≥ target
|
|
580
|
-
* const ms = new TreeMultiSet<number>();
|
|
581
|
-
* ms.add(10);
|
|
582
|
-
* ms.add(20);
|
|
583
|
-
* ms.add(30);
|
|
584
|
-
* console.log(ms.ceiling(15)); // 20;
|
|
585
|
-
*/
|
|
586
|
-
ceiling(key: K): K | undefined;
|
|
587
|
-
/**
|
|
588
|
-
* Returns the largest key <= given key, or undefined.
|
|
589
|
-
* @remarks Time O(log n), Space O(1)
|
|
590
|
-
|
|
591
2683
|
|
|
592
2684
|
|
|
593
2685
|
|
|
@@ -617,19 +2709,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
617
2709
|
|
|
618
2710
|
|
|
619
2711
|
|
|
620
|
-
* @example
|
|
621
|
-
* // Greatest key ≤ target
|
|
622
|
-
* const ms = new TreeMultiSet<number>();
|
|
623
|
-
* ms.add(10);
|
|
624
|
-
* ms.add(20);
|
|
625
|
-
* ms.add(30);
|
|
626
|
-
* console.log(ms.floor(25)); // 20;
|
|
627
|
-
*/
|
|
628
|
-
floor(key: K): K | undefined;
|
|
629
|
-
/**
|
|
630
|
-
* Returns the smallest key > given key, or undefined.
|
|
631
|
-
* @remarks Time O(log n), Space O(1)
|
|
632
|
-
|
|
633
2712
|
|
|
634
2713
|
|
|
635
2714
|
|
|
@@ -659,18 +2738,25 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
659
2738
|
|
|
660
2739
|
|
|
661
2740
|
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
2741
|
+
|
|
2742
|
+
|
|
2743
|
+
|
|
2744
|
+
|
|
2745
|
+
|
|
2746
|
+
|
|
2747
|
+
|
|
2748
|
+
|
|
2749
|
+
|
|
2750
|
+
|
|
2751
|
+
|
|
2752
|
+
|
|
2753
|
+
|
|
2754
|
+
|
|
2755
|
+
|
|
2756
|
+
|
|
2757
|
+
|
|
2758
|
+
|
|
2759
|
+
|
|
674
2760
|
|
|
675
2761
|
|
|
676
2762
|
|
|
@@ -701,16 +2787,17 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
701
2787
|
|
|
702
2788
|
|
|
703
2789
|
* @example
|
|
704
|
-
* //
|
|
2790
|
+
* // Deep clone
|
|
705
2791
|
* const ms = new TreeMultiSet<number>();
|
|
706
|
-
* ms.add(
|
|
707
|
-
* ms.
|
|
708
|
-
*
|
|
2792
|
+
* ms.add(1, 3);
|
|
2793
|
+
* const copy = ms.clone();
|
|
2794
|
+
* copy.deleteAll(1);
|
|
2795
|
+
* console.log(ms.has(1)); // true;
|
|
709
2796
|
*/
|
|
710
|
-
|
|
2797
|
+
clone(): TreeMultiSet<K>;
|
|
711
2798
|
/**
|
|
712
|
-
*
|
|
713
|
-
* @remarks Time O(n), Space O(
|
|
2799
|
+
* Returns keys within the given range.
|
|
2800
|
+
* @remarks Time O(log n + k), Space O(k) where k is result size
|
|
714
2801
|
|
|
715
2802
|
|
|
716
2803
|
|
|
@@ -750,21 +2837,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
750
2837
|
|
|
751
2838
|
|
|
752
2839
|
|
|
753
|
-
* @example
|
|
754
|
-
* // Iterate
|
|
755
|
-
* const ms = new TreeMultiSet<number>();
|
|
756
|
-
* ms.add(1, 2);
|
|
757
|
-
* ms.add(2);
|
|
758
|
-
* const pairs: [number, number][] = [];
|
|
759
|
-
* ms.forEach((k, c) => pairs.push([k, c]));
|
|
760
|
-
* console.log(pairs); // [[1, 2], [2, 1]];
|
|
761
|
-
*/
|
|
762
|
-
forEach(callback: (key: K, count: number) => void): void;
|
|
763
|
-
/**
|
|
764
|
-
* Creates a new TreeMultiSet with entries that match the predicate.
|
|
765
|
-
* @remarks Time O(n log n), Space O(n)
|
|
766
|
-
|
|
767
|
-
|
|
768
2840
|
|
|
769
2841
|
|
|
770
2842
|
|
|
@@ -802,20 +2874,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
802
2874
|
|
|
803
2875
|
|
|
804
2876
|
|
|
805
|
-
* @example
|
|
806
|
-
* // Filter
|
|
807
|
-
* const ms = new TreeMultiSet<number>();
|
|
808
|
-
* ms.add(1, 3);
|
|
809
|
-
* ms.add(2, 1);
|
|
810
|
-
* ms.add(3, 2);
|
|
811
|
-
* const filtered = ms.filter((k, c) => c > 1);
|
|
812
|
-
* console.log([...filtered.keysDistinct()]); // [1, 3];
|
|
813
|
-
*/
|
|
814
|
-
filter(predicate: (key: K, count: number) => boolean): TreeMultiSet<K>;
|
|
815
|
-
/**
|
|
816
|
-
* Reduces the multiset to a single value.
|
|
817
|
-
* @remarks Time O(n), Space O(1)
|
|
818
|
-
|
|
819
2877
|
|
|
820
2878
|
|
|
821
2879
|
|
|
@@ -855,18 +2913,18 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
855
2913
|
|
|
856
2914
|
|
|
857
2915
|
* @example
|
|
858
|
-
* //
|
|
2916
|
+
* // Find in range
|
|
859
2917
|
* const ms = new TreeMultiSet<number>();
|
|
860
|
-
* ms.add(
|
|
861
|
-
* ms.add(
|
|
862
|
-
*
|
|
863
|
-
*
|
|
2918
|
+
* ms.add(10);
|
|
2919
|
+
* ms.add(20);
|
|
2920
|
+
* ms.add(30);
|
|
2921
|
+
* const result = ms.rangeSearch([15, 25]);
|
|
2922
|
+
* console.log(result.length); // 1;
|
|
864
2923
|
*/
|
|
865
|
-
|
|
2924
|
+
rangeSearch<C extends (key: K) => any>(range: [K, K], callback?: C): (C extends undefined ? K : ReturnType<C>)[];
|
|
866
2925
|
/**
|
|
867
|
-
*
|
|
868
|
-
*
|
|
869
|
-
* @remarks Time O(n log n), Space O(n)
|
|
2926
|
+
* Prints the internal tree structure (for debugging).
|
|
2927
|
+
* @remarks Time O(n), Space O(n)
|
|
870
2928
|
|
|
871
2929
|
|
|
872
2930
|
|
|
@@ -906,21 +2964,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
906
2964
|
|
|
907
2965
|
|
|
908
2966
|
|
|
909
|
-
* @example
|
|
910
|
-
* // Transform
|
|
911
|
-
* const ms = new TreeMultiSet<number>();
|
|
912
|
-
* ms.add(1, 2);
|
|
913
|
-
* ms.add(2, 3);
|
|
914
|
-
* const doubled = ms.map((k, c) => [k * 10, c] as [number, number]);
|
|
915
|
-
* console.log([...doubled.keysDistinct()]); // [10, 20];
|
|
916
|
-
*/
|
|
917
|
-
map<K2>(mapper: (key: K, count: number) => [K2, number], options?: {
|
|
918
|
-
comparator?: Comparator<K2>;
|
|
919
|
-
}): TreeMultiSet<K2>;
|
|
920
|
-
/**
|
|
921
|
-
* Creates an independent copy of this multiset.
|
|
922
|
-
* @remarks Time O(n log n), Space O(n)
|
|
923
|
-
|
|
924
2967
|
|
|
925
2968
|
|
|
926
2969
|
|
|
@@ -959,19 +3002,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
959
3002
|
|
|
960
3003
|
|
|
961
3004
|
|
|
962
|
-
* @example
|
|
963
|
-
* // Deep clone
|
|
964
|
-
* const ms = new TreeMultiSet<number>();
|
|
965
|
-
* ms.add(1, 3);
|
|
966
|
-
* const copy = ms.clone();
|
|
967
|
-
* copy.deleteAll(1);
|
|
968
|
-
* console.log(ms.has(1)); // true;
|
|
969
|
-
*/
|
|
970
|
-
clone(): TreeMultiSet<K>;
|
|
971
|
-
/**
|
|
972
|
-
* Returns keys within the given range.
|
|
973
|
-
* @remarks Time O(log n + k), Space O(k) where k is result size
|
|
974
|
-
|
|
975
3005
|
|
|
976
3006
|
|
|
977
3007
|
|
|
@@ -1001,20 +3031,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
1001
3031
|
|
|
1002
3032
|
|
|
1003
3033
|
|
|
1004
|
-
* @example
|
|
1005
|
-
* // Find in range
|
|
1006
|
-
* const ms = new TreeMultiSet<number>();
|
|
1007
|
-
* ms.add(10);
|
|
1008
|
-
* ms.add(20);
|
|
1009
|
-
* ms.add(30);
|
|
1010
|
-
* const result = ms.rangeSearch([15, 25]);
|
|
1011
|
-
* console.log(result.length); // 1;
|
|
1012
|
-
*/
|
|
1013
|
-
rangeSearch<C extends (key: K) => any>(range: [K, K], callback?: C): (C extends undefined ? K : ReturnType<C>)[];
|
|
1014
|
-
/**
|
|
1015
|
-
* Prints the internal tree structure (for debugging).
|
|
1016
|
-
* @remarks Time O(n), Space O(n)
|
|
1017
|
-
|
|
1018
3034
|
|
|
1019
3035
|
|
|
1020
3036
|
|