max-priority-queue-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.
Files changed (74) hide show
  1. package/dist/cjs/index.cjs +294 -0
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs-legacy/index.cjs +294 -0
  4. package/dist/cjs-legacy/index.cjs.map +1 -1
  5. package/dist/esm/index.mjs +294 -0
  6. package/dist/esm/index.mjs.map +1 -1
  7. package/dist/esm-legacy/index.mjs +294 -0
  8. package/dist/esm-legacy/index.mjs.map +1 -1
  9. package/dist/types/data-structures/base/index.d.ts +1 -0
  10. package/dist/types/data-structures/base/iterable-entry-base.d.ts +8 -8
  11. package/dist/types/data-structures/base/linear-base.d.ts +3 -3
  12. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +252 -0
  13. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +294 -0
  14. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +527 -2
  15. package/dist/types/data-structures/binary-tree/bst.d.ts +505 -1
  16. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +399 -0
  17. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +126 -1
  18. package/dist/types/data-structures/binary-tree/tree-map.d.ts +2881 -382
  19. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +2867 -347
  20. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +2328 -312
  21. package/dist/types/data-structures/binary-tree/tree-set.d.ts +2671 -277
  22. package/dist/types/data-structures/graph/abstract-graph.d.ts +4 -4
  23. package/dist/types/data-structures/graph/directed-graph.d.ts +210 -0
  24. package/dist/types/data-structures/graph/undirected-graph.d.ts +189 -0
  25. package/dist/types/data-structures/hash/hash-map.d.ts +241 -10
  26. package/dist/types/data-structures/heap/heap.d.ts +294 -0
  27. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +360 -3
  28. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +318 -3
  29. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +380 -2
  30. package/dist/types/data-structures/matrix/matrix.d.ts +168 -0
  31. package/dist/types/data-structures/queue/deque.d.ts +319 -4
  32. package/dist/types/data-structures/queue/queue.d.ts +252 -0
  33. package/dist/types/data-structures/stack/stack.d.ts +210 -0
  34. package/dist/types/data-structures/trie/trie.d.ts +256 -4
  35. package/dist/types/interfaces/graph.d.ts +1 -1
  36. package/dist/types/types/common.d.ts +2 -2
  37. package/dist/types/types/data-structures/heap/heap.d.ts +1 -0
  38. package/dist/types/types/data-structures/priority-queue/priority-queue.d.ts +1 -0
  39. package/dist/types/types/utils/validate-type.d.ts +4 -4
  40. package/dist/umd/max-priority-queue-typed.js +294 -0
  41. package/dist/umd/max-priority-queue-typed.js.map +1 -1
  42. package/dist/umd/max-priority-queue-typed.min.js.map +1 -1
  43. package/package.json +2 -2
  44. package/src/data-structures/base/index.ts +1 -0
  45. package/src/data-structures/base/iterable-entry-base.ts +8 -8
  46. package/src/data-structures/base/linear-base.ts +3 -3
  47. package/src/data-structures/binary-tree/avl-tree.ts +252 -0
  48. package/src/data-structures/binary-tree/binary-indexed-tree.ts +295 -1
  49. package/src/data-structures/binary-tree/binary-tree.ts +527 -2
  50. package/src/data-structures/binary-tree/bst.ts +505 -1
  51. package/src/data-structures/binary-tree/red-black-tree.ts +399 -0
  52. package/src/data-structures/binary-tree/segment-tree.ts +127 -2
  53. package/src/data-structures/binary-tree/tree-map.ts +2958 -459
  54. package/src/data-structures/binary-tree/tree-multi-map.ts +3069 -549
  55. package/src/data-structures/binary-tree/tree-multi-set.ts +2476 -460
  56. package/src/data-structures/binary-tree/tree-set.ts +2816 -422
  57. package/src/data-structures/graph/abstract-graph.ts +4 -4
  58. package/src/data-structures/graph/directed-graph.ts +210 -0
  59. package/src/data-structures/graph/undirected-graph.ts +189 -0
  60. package/src/data-structures/hash/hash-map.ts +246 -15
  61. package/src/data-structures/heap/heap.ts +294 -0
  62. package/src/data-structures/linked-list/doubly-linked-list.ts +360 -3
  63. package/src/data-structures/linked-list/singly-linked-list.ts +318 -3
  64. package/src/data-structures/linked-list/skip-linked-list.ts +380 -2
  65. package/src/data-structures/matrix/matrix.ts +169 -1
  66. package/src/data-structures/queue/deque.ts +320 -5
  67. package/src/data-structures/queue/queue.ts +252 -0
  68. package/src/data-structures/stack/stack.ts +210 -0
  69. package/src/data-structures/trie/trie.ts +257 -5
  70. package/src/interfaces/graph.ts +1 -1
  71. package/src/types/common.ts +2 -2
  72. package/src/types/data-structures/heap/heap.ts +1 -0
  73. package/src/types/data-structures/priority-queue/priority-queue.ts +1 -0
  74. 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
- * // Iterate entries
412
+ * // Get occurrence count
348
413
  * const ms = new TreeMultiSet<number>();
349
- * ms.add(1, 2);
350
- * console.log([...ms.entries()].length); // > 0;
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
- [Symbol.iterator](): Iterator<K>;
417
+ count(key: K): number;
358
418
  /**
359
- * Returns an array with all elements (expanded).
360
- * @remarks Time O(size), Space O(size)
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
- * // Remove all
2632
+ * // Transform
482
2633
  * const ms = new TreeMultiSet<number>();
483
- * ms.add(1);
484
- * ms.clear();
485
- * console.log(ms.isEmpty()); // true;
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
- clear(): void;
2639
+ map<K2>(mapper: (key: K, count: number) => [K2, number], options?: {
2640
+ comparator?: Comparator<K2>;
2641
+ }): TreeMultiSet<K2>;
488
2642
  /**
489
- * Returns the smallest key, or undefined if empty.
490
- * @remarks Time O(log n), Space O(1)
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
- * @example
663
- * // Least key > target
664
- * const ms = new TreeMultiSet<number>();
665
- * ms.add(10);
666
- * ms.add(20);
667
- * console.log(ms.higher(10)); // 20;
668
- */
669
- higher(key: K): K | undefined;
670
- /**
671
- * Returns the largest key < given key, or undefined.
672
- * @remarks Time O(log n), Space O(1)
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
- * // Greatest key < target
2790
+ * // Deep clone
705
2791
  * const ms = new TreeMultiSet<number>();
706
- * ms.add(10);
707
- * ms.add(20);
708
- * console.log(ms.lower(20)); // 10;
2792
+ * ms.add(1, 3);
2793
+ * const copy = ms.clone();
2794
+ * copy.deleteAll(1);
2795
+ * console.log(ms.has(1)); // true;
709
2796
  */
710
- lower(key: K): K | undefined;
2797
+ clone(): TreeMultiSet<K>;
711
2798
  /**
712
- * Iterates over distinct keys with their counts.
713
- * @remarks Time O(n), Space O(1)
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
- * // Aggregate
2916
+ * // Find in range
859
2917
  * const ms = new TreeMultiSet<number>();
860
- * ms.add(1, 2);
861
- * ms.add(2, 3);
862
- * const sum = ms.reduce((acc, k, c) => acc + k * c, 0);
863
- * console.log(sum); // 8;
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
- reduce<U>(callback: (accumulator: U, key: K, count: number) => U, initialValue: U): U;
2924
+ rangeSearch<C extends (key: K) => any>(range: [K, K], callback?: C): (C extends undefined ? K : ReturnType<C>)[];
866
2925
  /**
867
- * Maps keys and counts to a new TreeMultiSet.
868
- * When multiple keys map to the same new key, counts are merged (added).
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