data-structure-typed 2.5.1 → 2.5.3
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/CHANGELOG.md +5 -1
- package/MIGRATION.md +169 -0
- package/README.md +135 -23
- package/README_CN.md +551 -143
- package/SPECIFICATION.md +20 -14
- package/SPECIFICATION.zh-CN.md +20 -14
- package/dist/cjs/binary-tree.cjs +6460 -1591
- package/dist/cjs/graph.cjs +440 -20
- package/dist/cjs/hash.cjs +125 -22
- package/dist/cjs/heap.cjs +196 -47
- package/dist/cjs/index.cjs +8486 -2429
- package/dist/cjs/linked-list.cjs +456 -31
- package/dist/cjs/matrix.cjs +79 -9
- package/dist/cjs/priority-queue.cjs +193 -44
- package/dist/cjs/queue.cjs +391 -2
- package/dist/cjs/stack.cjs +92 -6
- package/dist/cjs/trie.cjs +122 -28
- package/dist/cjs-legacy/binary-tree.cjs +6484 -1612
- package/dist/cjs-legacy/graph.cjs +440 -20
- package/dist/cjs-legacy/hash.cjs +125 -22
- package/dist/cjs-legacy/heap.cjs +196 -47
- package/dist/cjs-legacy/index.cjs +8654 -2594
- package/dist/cjs-legacy/linked-list.cjs +456 -31
- package/dist/cjs-legacy/matrix.cjs +79 -9
- package/dist/cjs-legacy/priority-queue.cjs +193 -44
- package/dist/cjs-legacy/queue.cjs +391 -2
- package/dist/cjs-legacy/stack.cjs +92 -6
- package/dist/cjs-legacy/trie.cjs +122 -28
- package/dist/esm/binary-tree.mjs +6460 -1591
- package/dist/esm/graph.mjs +440 -20
- package/dist/esm/hash.mjs +125 -22
- package/dist/esm/heap.mjs +196 -47
- package/dist/esm/index.mjs +8486 -2430
- package/dist/esm/linked-list.mjs +456 -31
- package/dist/esm/matrix.mjs +79 -9
- package/dist/esm/priority-queue.mjs +193 -44
- package/dist/esm/queue.mjs +391 -2
- package/dist/esm/stack.mjs +92 -6
- package/dist/esm/trie.mjs +122 -28
- package/dist/esm-legacy/binary-tree.mjs +6484 -1612
- package/dist/esm-legacy/graph.mjs +440 -20
- package/dist/esm-legacy/hash.mjs +125 -22
- package/dist/esm-legacy/heap.mjs +196 -47
- package/dist/esm-legacy/index.mjs +8654 -2595
- package/dist/esm-legacy/linked-list.mjs +456 -31
- package/dist/esm-legacy/matrix.mjs +79 -9
- package/dist/esm-legacy/priority-queue.mjs +193 -44
- package/dist/esm-legacy/queue.mjs +391 -2
- package/dist/esm-legacy/stack.mjs +92 -6
- package/dist/esm-legacy/trie.mjs +122 -28
- package/dist/types/common/error.d.ts +9 -0
- package/dist/types/common/index.d.ts +1 -1
- package/dist/types/data-structures/binary-tree/avl-tree.d.ts +98 -2
- package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +112 -0
- package/dist/types/data-structures/binary-tree/binary-tree.d.ts +214 -13
- package/dist/types/data-structures/binary-tree/bst.d.ts +294 -3
- package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +155 -8
- package/dist/types/data-structures/binary-tree/segment-tree.d.ts +48 -0
- package/dist/types/data-structures/binary-tree/tree-map.d.ts +1370 -323
- package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +1329 -316
- package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +1116 -295
- package/dist/types/data-structures/binary-tree/tree-set.d.ts +1330 -326
- package/dist/types/data-structures/graph/directed-graph.d.ts +80 -0
- package/dist/types/data-structures/graph/undirected-graph.d.ts +72 -0
- package/dist/types/data-structures/hash/hash-map.d.ts +95 -6
- package/dist/types/data-structures/heap/heap.d.ts +154 -12
- package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +143 -0
- package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +121 -1
- package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +144 -0
- package/dist/types/data-structures/matrix/matrix.d.ts +64 -0
- package/dist/types/data-structures/queue/deque.d.ts +142 -0
- package/dist/types/data-structures/queue/queue.d.ts +109 -0
- package/dist/types/data-structures/stack/stack.d.ts +82 -2
- package/dist/types/data-structures/trie/trie.d.ts +96 -0
- package/dist/types/interfaces/binary-tree.d.ts +2 -3
- package/dist/types/types/data-structures/binary-tree/bst.d.ts +1 -0
- package/dist/types/types/data-structures/binary-tree/tree-map.d.ts +5 -0
- package/dist/types/types/data-structures/binary-tree/tree-multi-set.d.ts +4 -0
- package/dist/types/types/data-structures/binary-tree/tree-set.d.ts +4 -0
- package/dist/umd/data-structure-typed.js +8623 -2564
- package/dist/umd/data-structure-typed.min.js +5 -5
- package/docs-site-docusaurus/docs/api/classes/AVLTree.md +696 -194
- package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +11 -11
- package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +71 -71
- package/docs-site-docusaurus/docs/api/classes/BST.md +639 -189
- package/docs-site-docusaurus/docs/api/classes/BSTNode.md +13 -13
- package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +15 -15
- package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +148 -160
- package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +13 -13
- package/docs-site-docusaurus/docs/api/classes/Deque.md +105 -91
- package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +82 -82
- package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +104 -74
- package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +8 -8
- package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +12 -12
- package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +1 -1
- package/docs-site-docusaurus/docs/api/classes/HashMap.md +51 -51
- package/docs-site-docusaurus/docs/api/classes/Heap.md +96 -85
- package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +25 -25
- package/docs-site-docusaurus/docs/api/classes/IterableEntryBase.md +33 -33
- package/docs-site-docusaurus/docs/api/classes/LinearBase.md +50 -50
- package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +55 -55
- package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +55 -55
- package/docs-site-docusaurus/docs/api/classes/LinkedListNode.md +6 -6
- package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +78 -78
- package/docs-site-docusaurus/docs/api/classes/MapGraph.md +82 -82
- package/docs-site-docusaurus/docs/api/classes/Matrix.md +31 -31
- package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +104 -89
- package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +104 -89
- package/docs-site-docusaurus/docs/api/classes/MinHeap.md +104 -89
- package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +104 -89
- package/docs-site-docusaurus/docs/api/classes/Navigator.md +5 -5
- package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +103 -88
- package/docs-site-docusaurus/docs/api/classes/Queue.md +112 -60
- package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +708 -206
- package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +10 -10
- package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +79 -79
- package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +6 -6
- package/docs-site-docusaurus/docs/api/classes/SkipList.md +44 -44
- package/docs-site-docusaurus/docs/api/classes/Stack.md +42 -42
- package/docs-site-docusaurus/docs/api/classes/TreeMap.md +236 -33
- package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +162 -46
- package/docs-site-docusaurus/docs/api/classes/TreeSet.md +232 -32
- package/docs-site-docusaurus/docs/api/classes/Trie.md +47 -47
- package/docs-site-docusaurus/docs/api/classes/TrieNode.md +8 -8
- package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +81 -81
- package/docs-site-docusaurus/docs/guide/architecture.md +75 -5
- package/docs-site-docusaurus/docs/guide/concepts.md +53 -3
- package/docs-site-docusaurus/docs/guide/faq.md +233 -0
- package/docs-site-docusaurus/docs/guide/guides.md +43 -58
- package/docs-site-docusaurus/docs/guide/installation.md +2 -0
- package/docs-site-docusaurus/docs/guide/integrations.md +75 -176
- package/docs-site-docusaurus/docs/guide/overview.md +132 -11
- package/docs-site-docusaurus/docs/guide/performance.md +2 -0
- package/docs-site-docusaurus/docs/guide/quick-start.md +31 -0
- package/docs-site-docusaurus/docs/guide/use-cases/_category_.json +6 -0
- package/docs-site-docusaurus/docs/guide/use-cases/array-sort-alternative.md +158 -0
- package/docs-site-docusaurus/docs/guide/use-cases/heap-vs-sorting.md +92 -0
- package/docs-site-docusaurus/docs/guide/use-cases/map-vs-treemap.md +151 -0
- package/docs-site-docusaurus/docs/guide/use-cases/priority-queue-typescript.md +113 -0
- package/docs-site-docusaurus/docs/guide/use-cases/treemap-javascript.md +151 -0
- package/docs-site-docusaurus/docusaurus.config.ts +1 -1
- package/docs-site-docusaurus/src/pages/index.tsx +55 -2
- package/docs-site-docusaurus/static/llms.txt +37 -0
- package/docs-site-docusaurus/typedoc.json +1 -0
- package/llms.txt +37 -0
- package/package.json +65 -56
- package/src/common/error.ts +19 -1
- package/src/common/index.ts +1 -1
- package/src/data-structures/base/iterable-element-base.ts +3 -2
- package/src/data-structures/binary-tree/avl-tree.ts +99 -5
- package/src/data-structures/binary-tree/binary-indexed-tree.ts +102 -4
- package/src/data-structures/binary-tree/binary-tree.ts +239 -78
- package/src/data-structures/binary-tree/bst.ts +542 -13
- package/src/data-structures/binary-tree/red-black-tree.ts +155 -15
- package/src/data-structures/binary-tree/segment-tree.ts +42 -0
- package/src/data-structures/binary-tree/tree-map.ts +1223 -261
- package/src/data-structures/binary-tree/tree-multi-map.ts +939 -30
- package/src/data-structures/binary-tree/tree-multi-set.ts +746 -10
- package/src/data-structures/binary-tree/tree-set.ts +1018 -99
- package/src/data-structures/graph/abstract-graph.ts +2 -2
- package/src/data-structures/graph/directed-graph.ts +71 -1
- package/src/data-structures/graph/undirected-graph.ts +64 -1
- package/src/data-structures/hash/hash-map.ts +102 -16
- package/src/data-structures/heap/heap.ts +153 -23
- package/src/data-structures/heap/max-heap.ts +2 -2
- package/src/data-structures/linked-list/doubly-linked-list.ts +139 -0
- package/src/data-structures/linked-list/singly-linked-list.ts +106 -1
- package/src/data-structures/linked-list/skip-linked-list.ts +131 -5
- package/src/data-structures/matrix/matrix.ts +65 -9
- package/src/data-structures/priority-queue/max-priority-queue.ts +2 -2
- package/src/data-structures/queue/deque.ts +130 -0
- package/src/data-structures/queue/queue.ts +109 -0
- package/src/data-structures/stack/stack.ts +75 -5
- package/src/data-structures/trie/trie.ts +86 -2
- package/src/interfaces/binary-tree.ts +1 -9
- package/src/types/data-structures/binary-tree/bst.ts +1 -0
- package/src/types/data-structures/binary-tree/tree-map.ts +6 -0
- package/src/types/data-structures/binary-tree/tree-multi-set.ts +5 -0
- package/src/types/data-structures/binary-tree/tree-set.ts +5 -0
- package/.vitepress/cache/deps_temp_51f5f1b0/chunk-7OIKW5WK.js +0 -12984
- package/.vitepress/cache/deps_temp_51f5f1b0/package.json +0 -3
- package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vue_devtools-api.js +0 -4505
- package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vueuse_core.js +0 -9731
- package/.vitepress/cache/deps_temp_51f5f1b0/vue.js +0 -347
|
@@ -56,6 +56,14 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
56
56
|
|
|
57
57
|
|
|
58
58
|
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
59
67
|
|
|
60
68
|
|
|
61
69
|
|
|
@@ -214,19 +222,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
214
222
|
|
|
215
223
|
|
|
216
224
|
|
|
217
|
-
* @example
|
|
218
|
-
* // Check empty
|
|
219
|
-
* console.log(new TreeMultiSet().isEmpty()); // true;
|
|
220
|
-
*/
|
|
221
|
-
isEmpty(): boolean;
|
|
222
|
-
/**
|
|
223
|
-
* Whether the multiset contains the given key.
|
|
224
|
-
* @remarks Time O(log n), Space O(1)
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
225
|
|
|
231
226
|
|
|
232
227
|
|
|
@@ -267,6 +262,14 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
267
262
|
|
|
268
263
|
|
|
269
264
|
|
|
265
|
+
* @example
|
|
266
|
+
* // Check empty
|
|
267
|
+
* console.log(new TreeMultiSet().isEmpty()); // true;
|
|
268
|
+
*/
|
|
269
|
+
isEmpty(): boolean;
|
|
270
|
+
/**
|
|
271
|
+
* Whether the multiset contains the given key.
|
|
272
|
+
* @remarks Time O(log n), Space O(1)
|
|
270
273
|
|
|
271
274
|
|
|
272
275
|
|
|
@@ -363,17 +366,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
363
366
|
|
|
364
367
|
|
|
365
368
|
|
|
366
|
-
* @example
|
|
367
|
-
* // Check existence
|
|
368
|
-
* const ms = new TreeMultiSet<number>();
|
|
369
|
-
* ms.add(1);
|
|
370
|
-
* console.log(ms.has(1)); // true;
|
|
371
|
-
* console.log(ms.has(2)); // false;
|
|
372
|
-
*/
|
|
373
|
-
has(key: K): boolean;
|
|
374
|
-
/**
|
|
375
|
-
* Returns the count of occurrences for the given key.
|
|
376
|
-
* @remarks Time O(log n), Space O(1)
|
|
377
369
|
|
|
378
370
|
|
|
379
371
|
|
|
@@ -396,17 +388,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
396
388
|
|
|
397
389
|
|
|
398
390
|
|
|
399
|
-
* @example
|
|
400
|
-
* // Get occurrence count
|
|
401
|
-
* const ms = new TreeMultiSet<number>();
|
|
402
|
-
* ms.add(1, 5);
|
|
403
|
-
* console.log(ms.count(1)); // 5;
|
|
404
|
-
*/
|
|
405
|
-
count(key: K): number;
|
|
406
|
-
/**
|
|
407
|
-
* Add `n` occurrences of `key`.
|
|
408
|
-
* @returns True if the multiset changed.
|
|
409
|
-
* @remarks Time O(log n), Space O(1)
|
|
410
391
|
|
|
411
392
|
|
|
412
393
|
|
|
@@ -470,6 +451,17 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
470
451
|
|
|
471
452
|
|
|
472
453
|
|
|
454
|
+
* @example
|
|
455
|
+
* // Check existence
|
|
456
|
+
* const ms = new TreeMultiSet<number>();
|
|
457
|
+
* ms.add(1);
|
|
458
|
+
* console.log(ms.has(1)); // true;
|
|
459
|
+
* console.log(ms.has(2)); // false;
|
|
460
|
+
*/
|
|
461
|
+
has(key: K): boolean;
|
|
462
|
+
/**
|
|
463
|
+
* Returns the count of occurrences for the given key.
|
|
464
|
+
* @remarks Time O(log n), Space O(1)
|
|
473
465
|
|
|
474
466
|
|
|
475
467
|
|
|
@@ -500,6 +492,17 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
500
492
|
|
|
501
493
|
|
|
502
494
|
|
|
495
|
+
* @example
|
|
496
|
+
* // Get occurrence count
|
|
497
|
+
* const ms = new TreeMultiSet<number>();
|
|
498
|
+
* ms.add(1, 5);
|
|
499
|
+
* console.log(ms.count(1)); // 5;
|
|
500
|
+
*/
|
|
501
|
+
count(key: K): number;
|
|
502
|
+
/**
|
|
503
|
+
* Add `n` occurrences of `key`.
|
|
504
|
+
* @returns True if the multiset changed.
|
|
505
|
+
* @remarks Time O(log n), Space O(1)
|
|
503
506
|
|
|
504
507
|
|
|
505
508
|
|
|
@@ -539,20 +542,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
539
542
|
|
|
540
543
|
|
|
541
544
|
|
|
542
|
-
* @example
|
|
543
|
-
* // Add elements
|
|
544
|
-
* const ms = new TreeMultiSet<number>();
|
|
545
|
-
* ms.add(1);
|
|
546
|
-
* ms.add(1);
|
|
547
|
-
* ms.add(2);
|
|
548
|
-
* console.log(ms.count(1)); // 2;
|
|
549
|
-
* console.log(ms.size); // 3;
|
|
550
|
-
*/
|
|
551
|
-
add(key: K, n?: number): boolean;
|
|
552
|
-
/**
|
|
553
|
-
* Set count for `key` to exactly `n`.
|
|
554
|
-
* @returns True if changed.
|
|
555
|
-
* @remarks Time O(log n), Space O(1)
|
|
556
545
|
|
|
557
546
|
|
|
558
547
|
|
|
@@ -575,17 +564,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
575
564
|
|
|
576
565
|
|
|
577
566
|
|
|
578
|
-
* @example
|
|
579
|
-
* // Set occurrence count
|
|
580
|
-
* const ms = new TreeMultiSet<number>();
|
|
581
|
-
* ms.setCount(1, 3);
|
|
582
|
-
* console.log(ms.count(1)); // 3;
|
|
583
|
-
*/
|
|
584
|
-
setCount(key: K, n: number): boolean;
|
|
585
|
-
/**
|
|
586
|
-
* Delete `n` occurrences of `key` (default 1).
|
|
587
|
-
* @returns True if any occurrence was removed.
|
|
588
|
-
* @remarks Time O(log n), Space O(1)
|
|
589
567
|
|
|
590
568
|
|
|
591
569
|
|
|
@@ -697,6 +675,20 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
697
675
|
|
|
698
676
|
|
|
699
677
|
|
|
678
|
+
* @example
|
|
679
|
+
* // Add elements
|
|
680
|
+
* const ms = new TreeMultiSet<number>();
|
|
681
|
+
* ms.add(1);
|
|
682
|
+
* ms.add(1);
|
|
683
|
+
* ms.add(2);
|
|
684
|
+
* console.log(ms.count(1)); // 2;
|
|
685
|
+
* console.log(ms.size); // 3;
|
|
686
|
+
*/
|
|
687
|
+
add(key: K, n?: number): boolean;
|
|
688
|
+
/**
|
|
689
|
+
* Set count for `key` to exactly `n`.
|
|
690
|
+
* @returns True if changed.
|
|
691
|
+
* @remarks Time O(log n), Space O(1)
|
|
700
692
|
|
|
701
693
|
|
|
702
694
|
|
|
@@ -728,15 +720,14 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
728
720
|
|
|
729
721
|
|
|
730
722
|
* @example
|
|
731
|
-
* //
|
|
723
|
+
* // Set occurrence count
|
|
732
724
|
* const ms = new TreeMultiSet<number>();
|
|
733
|
-
* ms.
|
|
734
|
-
* ms.
|
|
735
|
-
* console.log(ms.count(1)); // 2;
|
|
725
|
+
* ms.setCount(1, 3);
|
|
726
|
+
* console.log(ms.count(1)); // 3;
|
|
736
727
|
*/
|
|
737
|
-
|
|
728
|
+
setCount(key: K, n: number): boolean;
|
|
738
729
|
/**
|
|
739
|
-
* Delete
|
|
730
|
+
* Delete `n` occurrences of `key` (default 1).
|
|
740
731
|
* @returns True if any occurrence was removed.
|
|
741
732
|
* @remarks Time O(log n), Space O(1)
|
|
742
733
|
|
|
@@ -761,18 +752,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
761
752
|
|
|
762
753
|
|
|
763
754
|
|
|
764
|
-
* @example
|
|
765
|
-
* // Remove all occurrences
|
|
766
|
-
* const ms = new TreeMultiSet<number>();
|
|
767
|
-
* ms.add(1, 3);
|
|
768
|
-
* ms.deleteAll(1);
|
|
769
|
-
* console.log(ms.has(1)); // false;
|
|
770
|
-
*/
|
|
771
|
-
deleteAll(key: K): boolean;
|
|
772
|
-
/**
|
|
773
|
-
* Iterates over distinct keys (each key yielded once).
|
|
774
|
-
* @remarks Time O(n), Space O(1)
|
|
775
|
-
|
|
776
755
|
|
|
777
756
|
|
|
778
757
|
|
|
@@ -794,17 +773,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
794
773
|
|
|
795
774
|
|
|
796
775
|
|
|
797
|
-
* @example
|
|
798
|
-
* // Iterate unique keys
|
|
799
|
-
* const ms = new TreeMultiSet<number>();
|
|
800
|
-
* ms.add(1, 2);
|
|
801
|
-
* ms.add(2);
|
|
802
|
-
* console.log([...ms.keysDistinct()]); // [1, 2];
|
|
803
|
-
*/
|
|
804
|
-
keysDistinct(): IterableIterator<K>;
|
|
805
|
-
/**
|
|
806
|
-
* Iterates over entries as [key, count] pairs.
|
|
807
|
-
* @remarks Time O(n), Space O(1)
|
|
808
776
|
|
|
809
777
|
|
|
810
778
|
|
|
@@ -944,20 +912,17 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
944
912
|
|
|
945
913
|
|
|
946
914
|
* @example
|
|
947
|
-
* //
|
|
915
|
+
* // Remove one occurrence
|
|
948
916
|
* const ms = new TreeMultiSet<number>();
|
|
949
|
-
* ms.add(1,
|
|
950
|
-
*
|
|
951
|
-
|
|
952
|
-
entries(): IterableIterator<[K, number]>;
|
|
953
|
-
/**
|
|
954
|
-
* Expanded iteration (default). Each key is yielded `count(key)` times.
|
|
955
|
-
* @remarks Time O(size), Space O(1) where size is total occurrences
|
|
917
|
+
* ms.add(1, 3);
|
|
918
|
+
* ms.delete(1);
|
|
919
|
+
* console.log(ms.count(1)); // 2;
|
|
956
920
|
*/
|
|
957
|
-
|
|
921
|
+
delete(key: K, n?: number): boolean;
|
|
958
922
|
/**
|
|
959
|
-
*
|
|
960
|
-
* @
|
|
923
|
+
* Delete all occurrences of the given key.
|
|
924
|
+
* @returns True if any occurrence was removed.
|
|
925
|
+
* @remarks Time O(log n), Space O(1)
|
|
961
926
|
|
|
962
927
|
|
|
963
928
|
|
|
@@ -988,6 +953,17 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
988
953
|
|
|
989
954
|
|
|
990
955
|
|
|
956
|
+
* @example
|
|
957
|
+
* // Remove all occurrences
|
|
958
|
+
* const ms = new TreeMultiSet<number>();
|
|
959
|
+
* ms.add(1, 3);
|
|
960
|
+
* ms.deleteAll(1);
|
|
961
|
+
* console.log(ms.has(1)); // false;
|
|
962
|
+
*/
|
|
963
|
+
deleteAll(key: K): boolean;
|
|
964
|
+
/**
|
|
965
|
+
* Iterates over distinct keys (each key yielded once).
|
|
966
|
+
* @remarks Time O(n), Space O(1)
|
|
991
967
|
|
|
992
968
|
|
|
993
969
|
|
|
@@ -1018,6 +994,17 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
1018
994
|
|
|
1019
995
|
|
|
1020
996
|
|
|
997
|
+
* @example
|
|
998
|
+
* // Iterate unique keys
|
|
999
|
+
* const ms = new TreeMultiSet<number>();
|
|
1000
|
+
* ms.add(1, 2);
|
|
1001
|
+
* ms.add(2);
|
|
1002
|
+
* console.log([...ms.keysDistinct()]); // [1, 2];
|
|
1003
|
+
*/
|
|
1004
|
+
keysDistinct(): IterableIterator<K>;
|
|
1005
|
+
/**
|
|
1006
|
+
* Iterates over entries as [key, count] pairs.
|
|
1007
|
+
* @remarks Time O(n), Space O(1)
|
|
1021
1008
|
|
|
1022
1009
|
|
|
1023
1010
|
|
|
@@ -1096,17 +1083,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
1096
1083
|
|
|
1097
1084
|
|
|
1098
1085
|
|
|
1099
|
-
* @example
|
|
1100
|
-
* // All elements (with duplicates)
|
|
1101
|
-
* const ms = new TreeMultiSet<number>();
|
|
1102
|
-
* ms.add(1, 2);
|
|
1103
|
-
* ms.add(2);
|
|
1104
|
-
* console.log(ms.toArray()); // [1, 1, 2];
|
|
1105
|
-
*/
|
|
1106
|
-
toArray(): K[];
|
|
1107
|
-
/**
|
|
1108
|
-
* Returns an array with distinct keys only.
|
|
1109
|
-
* @remarks Time O(n), Space O(n)
|
|
1110
1086
|
|
|
1111
1087
|
|
|
1112
1088
|
|
|
@@ -1129,17 +1105,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
1129
1105
|
|
|
1130
1106
|
|
|
1131
1107
|
|
|
1132
|
-
* @example
|
|
1133
|
-
* // Unique keys only
|
|
1134
|
-
* const ms = new TreeMultiSet<number>();
|
|
1135
|
-
* ms.add(1, 3);
|
|
1136
|
-
* ms.add(2);
|
|
1137
|
-
* console.log(ms.toDistinctArray()); // [1, 2];
|
|
1138
|
-
*/
|
|
1139
|
-
toDistinctArray(): K[];
|
|
1140
|
-
/**
|
|
1141
|
-
* Returns an array of [key, count] entries.
|
|
1142
|
-
* @remarks Time O(n), Space O(n)
|
|
1143
1108
|
|
|
1144
1109
|
|
|
1145
1110
|
|
|
@@ -1162,23 +1127,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
1162
1127
|
|
|
1163
1128
|
|
|
1164
1129
|
|
|
1165
|
-
* @example
|
|
1166
|
-
* // Key-count pairs
|
|
1167
|
-
* const ms = new TreeMultiSet<number>();
|
|
1168
|
-
* ms.add(1, 2);
|
|
1169
|
-
* ms.add(3);
|
|
1170
|
-
* console.log(ms.toEntries()); // [[1, 2], [3, 1]];
|
|
1171
|
-
*/
|
|
1172
|
-
toEntries(): Array<[K, number]>;
|
|
1173
|
-
/**
|
|
1174
|
-
* Expose comparator for advanced usage/testing (read-only).
|
|
1175
|
-
* @remarks Time O(1), Space O(1)
|
|
1176
|
-
*/
|
|
1177
|
-
get comparator(): Comparator<K>;
|
|
1178
|
-
/**
|
|
1179
|
-
* Remove all elements from the multiset.
|
|
1180
|
-
* @remarks Time O(1), Space O(1)
|
|
1181
|
-
|
|
1182
1130
|
|
|
1183
1131
|
|
|
1184
1132
|
|
|
@@ -1235,6 +1183,21 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
1235
1183
|
|
|
1236
1184
|
|
|
1237
1185
|
|
|
1186
|
+
* @example
|
|
1187
|
+
* // Iterate entries
|
|
1188
|
+
* const ms = new TreeMultiSet<number>();
|
|
1189
|
+
* ms.add(1, 2);
|
|
1190
|
+
* console.log([...ms.entries()].length); // > 0;
|
|
1191
|
+
*/
|
|
1192
|
+
entries(): IterableIterator<[K, number]>;
|
|
1193
|
+
/**
|
|
1194
|
+
* Expanded iteration (default). Each key is yielded `count(key)` times.
|
|
1195
|
+
* @remarks Time O(size), Space O(1) where size is total occurrences
|
|
1196
|
+
*/
|
|
1197
|
+
[Symbol.iterator](): Iterator<K>;
|
|
1198
|
+
/**
|
|
1199
|
+
* Returns an array with all elements (expanded).
|
|
1200
|
+
* @remarks Time O(size), Space O(size)
|
|
1238
1201
|
|
|
1239
1202
|
|
|
1240
1203
|
|
|
@@ -1317,18 +1280,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
1317
1280
|
|
|
1318
1281
|
|
|
1319
1282
|
|
|
1320
|
-
* @example
|
|
1321
|
-
* // Remove all
|
|
1322
|
-
* const ms = new TreeMultiSet<number>();
|
|
1323
|
-
* ms.add(1);
|
|
1324
|
-
* ms.clear();
|
|
1325
|
-
* console.log(ms.isEmpty()); // true;
|
|
1326
|
-
*/
|
|
1327
|
-
clear(): void;
|
|
1328
|
-
/**
|
|
1329
|
-
* Returns the smallest key, or undefined if empty.
|
|
1330
|
-
* @remarks Time O(log n), Space O(1)
|
|
1331
|
-
|
|
1332
1283
|
|
|
1333
1284
|
|
|
1334
1285
|
|
|
@@ -1351,9 +1302,402 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
1351
1302
|
|
|
1352
1303
|
|
|
1353
1304
|
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1305
|
+
|
|
1306
|
+
|
|
1307
|
+
|
|
1308
|
+
|
|
1309
|
+
|
|
1310
|
+
|
|
1311
|
+
|
|
1312
|
+
|
|
1313
|
+
|
|
1314
|
+
|
|
1315
|
+
|
|
1316
|
+
|
|
1317
|
+
|
|
1318
|
+
|
|
1319
|
+
|
|
1320
|
+
|
|
1321
|
+
|
|
1322
|
+
|
|
1323
|
+
|
|
1324
|
+
|
|
1325
|
+
|
|
1326
|
+
|
|
1327
|
+
|
|
1328
|
+
|
|
1329
|
+
|
|
1330
|
+
|
|
1331
|
+
|
|
1332
|
+
|
|
1333
|
+
|
|
1334
|
+
|
|
1335
|
+
|
|
1336
|
+
|
|
1337
|
+
|
|
1338
|
+
|
|
1339
|
+
|
|
1340
|
+
|
|
1341
|
+
|
|
1342
|
+
|
|
1343
|
+
|
|
1344
|
+
|
|
1345
|
+
|
|
1346
|
+
|
|
1347
|
+
|
|
1348
|
+
|
|
1349
|
+
|
|
1350
|
+
|
|
1351
|
+
|
|
1352
|
+
|
|
1353
|
+
|
|
1354
|
+
|
|
1355
|
+
|
|
1356
|
+
|
|
1357
|
+
|
|
1358
|
+
|
|
1359
|
+
|
|
1360
|
+
|
|
1361
|
+
|
|
1362
|
+
|
|
1363
|
+
|
|
1364
|
+
|
|
1365
|
+
|
|
1366
|
+
|
|
1367
|
+
|
|
1368
|
+
|
|
1369
|
+
|
|
1370
|
+
|
|
1371
|
+
|
|
1372
|
+
|
|
1373
|
+
|
|
1374
|
+
|
|
1375
|
+
|
|
1376
|
+
|
|
1377
|
+
|
|
1378
|
+
|
|
1379
|
+
* @example
|
|
1380
|
+
* // All elements (with duplicates)
|
|
1381
|
+
* const ms = new TreeMultiSet<number>();
|
|
1382
|
+
* ms.add(1, 2);
|
|
1383
|
+
* ms.add(2);
|
|
1384
|
+
* console.log(ms.toArray()); // [1, 1, 2];
|
|
1385
|
+
*/
|
|
1386
|
+
toArray(): K[];
|
|
1387
|
+
/**
|
|
1388
|
+
* Returns an array with distinct keys only.
|
|
1389
|
+
* @remarks Time O(n), Space O(n)
|
|
1390
|
+
|
|
1391
|
+
|
|
1392
|
+
|
|
1393
|
+
|
|
1394
|
+
|
|
1395
|
+
|
|
1396
|
+
|
|
1397
|
+
|
|
1398
|
+
|
|
1399
|
+
|
|
1400
|
+
|
|
1401
|
+
|
|
1402
|
+
|
|
1403
|
+
|
|
1404
|
+
|
|
1405
|
+
|
|
1406
|
+
|
|
1407
|
+
|
|
1408
|
+
|
|
1409
|
+
|
|
1410
|
+
|
|
1411
|
+
|
|
1412
|
+
|
|
1413
|
+
|
|
1414
|
+
|
|
1415
|
+
|
|
1416
|
+
|
|
1417
|
+
|
|
1418
|
+
|
|
1419
|
+
|
|
1420
|
+
* @example
|
|
1421
|
+
* // Unique keys only
|
|
1422
|
+
* const ms = new TreeMultiSet<number>();
|
|
1423
|
+
* ms.add(1, 3);
|
|
1424
|
+
* ms.add(2);
|
|
1425
|
+
* console.log(ms.toDistinctArray()); // [1, 2];
|
|
1426
|
+
*/
|
|
1427
|
+
toDistinctArray(): K[];
|
|
1428
|
+
/**
|
|
1429
|
+
* Returns an array of [key, count] entries.
|
|
1430
|
+
* @remarks Time O(n), Space O(n)
|
|
1431
|
+
|
|
1432
|
+
|
|
1433
|
+
|
|
1434
|
+
|
|
1435
|
+
|
|
1436
|
+
|
|
1437
|
+
|
|
1438
|
+
|
|
1439
|
+
|
|
1440
|
+
|
|
1441
|
+
|
|
1442
|
+
|
|
1443
|
+
|
|
1444
|
+
|
|
1445
|
+
|
|
1446
|
+
|
|
1447
|
+
|
|
1448
|
+
|
|
1449
|
+
|
|
1450
|
+
|
|
1451
|
+
|
|
1452
|
+
|
|
1453
|
+
|
|
1454
|
+
|
|
1455
|
+
|
|
1456
|
+
|
|
1457
|
+
|
|
1458
|
+
|
|
1459
|
+
|
|
1460
|
+
|
|
1461
|
+
* @example
|
|
1462
|
+
* // Key-count pairs
|
|
1463
|
+
* const ms = new TreeMultiSet<number>();
|
|
1464
|
+
* ms.add(1, 2);
|
|
1465
|
+
* ms.add(3);
|
|
1466
|
+
* console.log(ms.toEntries()); // [[1, 2], [3, 1]];
|
|
1467
|
+
*/
|
|
1468
|
+
toEntries(): Array<[K, number]>;
|
|
1469
|
+
/**
|
|
1470
|
+
* Expose comparator for advanced usage/testing (read-only).
|
|
1471
|
+
* @remarks Time O(1), Space O(1)
|
|
1472
|
+
*/
|
|
1473
|
+
get comparator(): Comparator<K>;
|
|
1474
|
+
/**
|
|
1475
|
+
* Remove all elements from the multiset.
|
|
1476
|
+
* @remarks Time O(1), Space O(1)
|
|
1477
|
+
|
|
1478
|
+
|
|
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
|
+
|
|
1504
|
+
|
|
1505
|
+
|
|
1506
|
+
|
|
1507
|
+
|
|
1508
|
+
|
|
1509
|
+
|
|
1510
|
+
|
|
1511
|
+
|
|
1512
|
+
|
|
1513
|
+
|
|
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
|
+
|
|
1629
|
+
|
|
1630
|
+
|
|
1631
|
+
|
|
1632
|
+
|
|
1633
|
+
|
|
1634
|
+
|
|
1635
|
+
|
|
1636
|
+
|
|
1637
|
+
|
|
1638
|
+
|
|
1639
|
+
|
|
1640
|
+
|
|
1641
|
+
|
|
1642
|
+
|
|
1643
|
+
|
|
1644
|
+
|
|
1645
|
+
|
|
1646
|
+
|
|
1647
|
+
|
|
1648
|
+
|
|
1649
|
+
|
|
1650
|
+
|
|
1651
|
+
|
|
1652
|
+
|
|
1653
|
+
|
|
1654
|
+
|
|
1655
|
+
|
|
1656
|
+
* @example
|
|
1657
|
+
* // Remove all
|
|
1658
|
+
* const ms = new TreeMultiSet<number>();
|
|
1659
|
+
* ms.add(1);
|
|
1660
|
+
* ms.clear();
|
|
1661
|
+
* console.log(ms.isEmpty()); // true;
|
|
1662
|
+
*/
|
|
1663
|
+
clear(): void;
|
|
1664
|
+
/**
|
|
1665
|
+
* Returns the smallest key, or undefined if empty.
|
|
1666
|
+
* @remarks Time O(log n), Space O(1)
|
|
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
|
+
* @example
|
|
1699
|
+
* // Smallest element
|
|
1700
|
+
* const ms = new TreeMultiSet<number>();
|
|
1357
1701
|
* ms.add(3);
|
|
1358
1702
|
* ms.add(1);
|
|
1359
1703
|
* console.log(ms.first()); // 1;
|
|
@@ -1364,6 +1708,252 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
1364
1708
|
* @remarks Time O(log n), Space O(1)
|
|
1365
1709
|
|
|
1366
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
|
+
* @example
|
|
1741
|
+
* // Largest element
|
|
1742
|
+
* const ms = new TreeMultiSet<number>();
|
|
1743
|
+
* ms.add(1);
|
|
1744
|
+
* ms.add(3);
|
|
1745
|
+
* console.log(ms.last()); // 3;
|
|
1746
|
+
*/
|
|
1747
|
+
last(): K | undefined;
|
|
1748
|
+
/**
|
|
1749
|
+
* Removes all occurrences of the smallest key and returns it.
|
|
1750
|
+
* @remarks Time O(log n), Space O(1)
|
|
1751
|
+
|
|
1752
|
+
|
|
1753
|
+
|
|
1754
|
+
|
|
1755
|
+
|
|
1756
|
+
|
|
1757
|
+
|
|
1758
|
+
|
|
1759
|
+
|
|
1760
|
+
|
|
1761
|
+
|
|
1762
|
+
|
|
1763
|
+
|
|
1764
|
+
|
|
1765
|
+
|
|
1766
|
+
|
|
1767
|
+
|
|
1768
|
+
|
|
1769
|
+
|
|
1770
|
+
|
|
1771
|
+
|
|
1772
|
+
|
|
1773
|
+
|
|
1774
|
+
|
|
1775
|
+
|
|
1776
|
+
|
|
1777
|
+
|
|
1778
|
+
|
|
1779
|
+
|
|
1780
|
+
|
|
1781
|
+
|
|
1782
|
+
* @example
|
|
1783
|
+
* // Remove and return smallest
|
|
1784
|
+
* const ms = new TreeMultiSet<number>();
|
|
1785
|
+
* ms.add(2);
|
|
1786
|
+
* ms.add(1);
|
|
1787
|
+
* console.log(ms.pollFirst()); // 1;
|
|
1788
|
+
* console.log(ms.has(1)); // false;
|
|
1789
|
+
*/
|
|
1790
|
+
pollFirst(): K | undefined;
|
|
1791
|
+
/**
|
|
1792
|
+
* Removes all occurrences of the largest key and returns it.
|
|
1793
|
+
* @remarks Time O(log n), Space O(1)
|
|
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
|
+
* @example
|
|
1826
|
+
* // Remove and return largest
|
|
1827
|
+
* const ms = new TreeMultiSet<number>();
|
|
1828
|
+
* ms.add(1);
|
|
1829
|
+
* ms.add(3);
|
|
1830
|
+
* console.log(ms.pollLast()); // 3;
|
|
1831
|
+
*/
|
|
1832
|
+
pollLast(): K | undefined;
|
|
1833
|
+
/**
|
|
1834
|
+
* Returns the smallest key >= given key, or undefined.
|
|
1835
|
+
* @remarks Time O(log n), Space O(1)
|
|
1836
|
+
|
|
1837
|
+
|
|
1838
|
+
|
|
1839
|
+
|
|
1840
|
+
|
|
1841
|
+
|
|
1842
|
+
|
|
1843
|
+
|
|
1844
|
+
|
|
1845
|
+
|
|
1846
|
+
|
|
1847
|
+
|
|
1848
|
+
|
|
1849
|
+
|
|
1850
|
+
|
|
1851
|
+
|
|
1852
|
+
|
|
1853
|
+
|
|
1854
|
+
|
|
1855
|
+
|
|
1856
|
+
|
|
1857
|
+
|
|
1858
|
+
|
|
1859
|
+
|
|
1860
|
+
|
|
1861
|
+
|
|
1862
|
+
|
|
1863
|
+
|
|
1864
|
+
|
|
1865
|
+
|
|
1866
|
+
|
|
1867
|
+
|
|
1868
|
+
|
|
1869
|
+
|
|
1870
|
+
|
|
1871
|
+
|
|
1872
|
+
|
|
1873
|
+
|
|
1874
|
+
|
|
1875
|
+
|
|
1876
|
+
|
|
1877
|
+
|
|
1878
|
+
|
|
1879
|
+
|
|
1880
|
+
|
|
1881
|
+
|
|
1882
|
+
|
|
1883
|
+
|
|
1884
|
+
|
|
1885
|
+
|
|
1886
|
+
|
|
1887
|
+
|
|
1888
|
+
|
|
1889
|
+
|
|
1890
|
+
|
|
1891
|
+
|
|
1892
|
+
|
|
1893
|
+
|
|
1894
|
+
|
|
1895
|
+
|
|
1896
|
+
|
|
1897
|
+
|
|
1898
|
+
|
|
1899
|
+
|
|
1900
|
+
|
|
1901
|
+
|
|
1902
|
+
|
|
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
|
+
|
|
1367
1957
|
|
|
1368
1958
|
|
|
1369
1959
|
|
|
@@ -1386,15 +1976,16 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
1386
1976
|
|
|
1387
1977
|
|
|
1388
1978
|
* @example
|
|
1389
|
-
* //
|
|
1979
|
+
* // Least key ≥ target
|
|
1390
1980
|
* const ms = new TreeMultiSet<number>();
|
|
1391
|
-
* ms.add(
|
|
1392
|
-
* ms.add(
|
|
1393
|
-
*
|
|
1981
|
+
* ms.add(10);
|
|
1982
|
+
* ms.add(20);
|
|
1983
|
+
* ms.add(30);
|
|
1984
|
+
* console.log(ms.ceiling(15)); // 20;
|
|
1394
1985
|
*/
|
|
1395
|
-
|
|
1986
|
+
ceiling(key: K): K | undefined;
|
|
1396
1987
|
/**
|
|
1397
|
-
*
|
|
1988
|
+
* Returns the largest key <= given key, or undefined.
|
|
1398
1989
|
* @remarks Time O(log n), Space O(1)
|
|
1399
1990
|
|
|
1400
1991
|
|
|
@@ -1416,20 +2007,139 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
1416
2007
|
|
|
1417
2008
|
|
|
1418
2009
|
|
|
2010
|
+
|
|
2011
|
+
|
|
2012
|
+
|
|
2013
|
+
|
|
2014
|
+
|
|
2015
|
+
|
|
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
|
+
|
|
1419
2129
|
|
|
1420
2130
|
|
|
1421
2131
|
|
|
1422
2132
|
* @example
|
|
1423
|
-
* //
|
|
2133
|
+
* // Greatest key ≤ target
|
|
1424
2134
|
* const ms = new TreeMultiSet<number>();
|
|
1425
|
-
* ms.add(
|
|
1426
|
-
* ms.add(
|
|
1427
|
-
*
|
|
1428
|
-
* console.log(ms.
|
|
2135
|
+
* ms.add(10);
|
|
2136
|
+
* ms.add(20);
|
|
2137
|
+
* ms.add(30);
|
|
2138
|
+
* console.log(ms.floor(25)); // 20;
|
|
1429
2139
|
*/
|
|
1430
|
-
|
|
2140
|
+
floor(key: K): K | undefined;
|
|
1431
2141
|
/**
|
|
1432
|
-
*
|
|
2142
|
+
* Returns the smallest key > given key, or undefined.
|
|
1433
2143
|
* @remarks Time O(log n), Space O(1)
|
|
1434
2144
|
|
|
1435
2145
|
|
|
@@ -1454,18 +2164,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
1454
2164
|
|
|
1455
2165
|
|
|
1456
2166
|
|
|
1457
|
-
* @example
|
|
1458
|
-
* // Remove and return largest
|
|
1459
|
-
* const ms = new TreeMultiSet<number>();
|
|
1460
|
-
* ms.add(1);
|
|
1461
|
-
* ms.add(3);
|
|
1462
|
-
* console.log(ms.pollLast()); // 3;
|
|
1463
|
-
*/
|
|
1464
|
-
pollLast(): K | undefined;
|
|
1465
|
-
/**
|
|
1466
|
-
* Returns the smallest key >= given key, or undefined.
|
|
1467
|
-
* @remarks Time O(log n), Space O(1)
|
|
1468
|
-
|
|
1469
2167
|
|
|
1470
2168
|
|
|
1471
2169
|
|
|
@@ -1575,19 +2273,60 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
1575
2273
|
|
|
1576
2274
|
|
|
1577
2275
|
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
2276
|
+
|
|
2277
|
+
|
|
2278
|
+
|
|
2279
|
+
|
|
2280
|
+
|
|
2281
|
+
|
|
2282
|
+
|
|
2283
|
+
|
|
2284
|
+
|
|
2285
|
+
|
|
2286
|
+
* @example
|
|
2287
|
+
* // Least key > target
|
|
2288
|
+
* const ms = new TreeMultiSet<number>();
|
|
2289
|
+
* ms.add(10);
|
|
2290
|
+
* ms.add(20);
|
|
2291
|
+
* console.log(ms.higher(10)); // 20;
|
|
2292
|
+
*/
|
|
2293
|
+
higher(key: K): K | undefined;
|
|
2294
|
+
/**
|
|
2295
|
+
* Returns the largest key < given key, or undefined.
|
|
2296
|
+
* @remarks Time O(log n), Space O(1)
|
|
2297
|
+
|
|
2298
|
+
|
|
2299
|
+
|
|
2300
|
+
|
|
2301
|
+
|
|
2302
|
+
|
|
2303
|
+
|
|
2304
|
+
|
|
2305
|
+
|
|
2306
|
+
|
|
2307
|
+
|
|
2308
|
+
|
|
2309
|
+
|
|
2310
|
+
|
|
2311
|
+
|
|
2312
|
+
|
|
2313
|
+
|
|
2314
|
+
|
|
2315
|
+
|
|
2316
|
+
|
|
2317
|
+
|
|
2318
|
+
|
|
2319
|
+
|
|
2320
|
+
|
|
2321
|
+
|
|
2322
|
+
|
|
2323
|
+
|
|
2324
|
+
|
|
2325
|
+
|
|
2326
|
+
|
|
2327
|
+
|
|
2328
|
+
|
|
2329
|
+
|
|
1591
2330
|
|
|
1592
2331
|
|
|
1593
2332
|
|
|
@@ -1698,17 +2437,16 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
1698
2437
|
|
|
1699
2438
|
|
|
1700
2439
|
* @example
|
|
1701
|
-
* // Greatest key
|
|
2440
|
+
* // Greatest key < target
|
|
1702
2441
|
* const ms = new TreeMultiSet<number>();
|
|
1703
2442
|
* ms.add(10);
|
|
1704
2443
|
* ms.add(20);
|
|
1705
|
-
* ms.
|
|
1706
|
-
* console.log(ms.floor(25)); // 20;
|
|
2444
|
+
* console.log(ms.lower(20)); // 10;
|
|
1707
2445
|
*/
|
|
1708
|
-
|
|
2446
|
+
lower(key: K): K | undefined;
|
|
1709
2447
|
/**
|
|
1710
|
-
*
|
|
1711
|
-
* @remarks Time O(
|
|
2448
|
+
* Iterates over distinct keys with their counts.
|
|
2449
|
+
* @remarks Time O(n), Space O(1)
|
|
1712
2450
|
|
|
1713
2451
|
|
|
1714
2452
|
|
|
@@ -1819,18 +2557,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
1819
2557
|
|
|
1820
2558
|
|
|
1821
2559
|
|
|
1822
|
-
* @example
|
|
1823
|
-
* // Least key > target
|
|
1824
|
-
* const ms = new TreeMultiSet<number>();
|
|
1825
|
-
* ms.add(10);
|
|
1826
|
-
* ms.add(20);
|
|
1827
|
-
* console.log(ms.higher(10)); // 20;
|
|
1828
|
-
*/
|
|
1829
|
-
higher(key: K): K | undefined;
|
|
1830
|
-
/**
|
|
1831
|
-
* Returns the largest key < given key, or undefined.
|
|
1832
|
-
* @remarks Time O(log n), Space O(1)
|
|
1833
|
-
|
|
1834
2560
|
|
|
1835
2561
|
|
|
1836
2562
|
|
|
@@ -1900,6 +2626,20 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
1900
2626
|
|
|
1901
2627
|
|
|
1902
2628
|
|
|
2629
|
+
* @example
|
|
2630
|
+
* // Iterate
|
|
2631
|
+
* const ms = new TreeMultiSet<number>();
|
|
2632
|
+
* ms.add(1, 2);
|
|
2633
|
+
* ms.add(2);
|
|
2634
|
+
* const pairs: [number, number][] = [];
|
|
2635
|
+
* ms.forEach((k, c) => pairs.push([k, c]));
|
|
2636
|
+
* console.log(pairs); // [[1, 2], [2, 1]];
|
|
2637
|
+
*/
|
|
2638
|
+
forEach(callback: (key: K, count: number) => void): void;
|
|
2639
|
+
/**
|
|
2640
|
+
* Creates a new TreeMultiSet with entries that match the predicate.
|
|
2641
|
+
* @remarks Time O(n log n), Space O(n)
|
|
2642
|
+
|
|
1903
2643
|
|
|
1904
2644
|
|
|
1905
2645
|
|
|
@@ -1940,18 +2680,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
1940
2680
|
|
|
1941
2681
|
|
|
1942
2682
|
|
|
1943
|
-
* @example
|
|
1944
|
-
* // Greatest key < target
|
|
1945
|
-
* const ms = new TreeMultiSet<number>();
|
|
1946
|
-
* ms.add(10);
|
|
1947
|
-
* ms.add(20);
|
|
1948
|
-
* console.log(ms.lower(20)); // 10;
|
|
1949
|
-
*/
|
|
1950
|
-
lower(key: K): K | undefined;
|
|
1951
|
-
/**
|
|
1952
|
-
* Iterates over distinct keys with their counts.
|
|
1953
|
-
* @remarks Time O(n), Space O(1)
|
|
1954
|
-
|
|
1955
2683
|
|
|
1956
2684
|
|
|
1957
2685
|
|
|
@@ -2091,18 +2819,18 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
2091
2819
|
|
|
2092
2820
|
|
|
2093
2821
|
* @example
|
|
2094
|
-
* //
|
|
2822
|
+
* // Filter
|
|
2095
2823
|
* const ms = new TreeMultiSet<number>();
|
|
2096
|
-
* ms.add(1,
|
|
2097
|
-
* ms.add(2);
|
|
2098
|
-
*
|
|
2099
|
-
* ms.
|
|
2100
|
-
* console.log(
|
|
2824
|
+
* ms.add(1, 3);
|
|
2825
|
+
* ms.add(2, 1);
|
|
2826
|
+
* ms.add(3, 2);
|
|
2827
|
+
* const filtered = ms.filter((k, c) => c > 1);
|
|
2828
|
+
* console.log([...filtered.keysDistinct()]); // [1, 3];
|
|
2101
2829
|
*/
|
|
2102
|
-
|
|
2830
|
+
filter(predicate: (key: K, count: number) => boolean): TreeMultiSet<K>;
|
|
2103
2831
|
/**
|
|
2104
|
-
*
|
|
2105
|
-
* @remarks Time O(n
|
|
2832
|
+
* Reduces the multiset to a single value.
|
|
2833
|
+
* @remarks Time O(n), Space O(1)
|
|
2106
2834
|
|
|
2107
2835
|
|
|
2108
2836
|
|
|
@@ -2242,28 +2970,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
2242
2970
|
|
|
2243
2971
|
|
|
2244
2972
|
|
|
2245
|
-
* @example
|
|
2246
|
-
* // Filter
|
|
2247
|
-
* const ms = new TreeMultiSet<number>();
|
|
2248
|
-
* ms.add(1, 3);
|
|
2249
|
-
* ms.add(2, 1);
|
|
2250
|
-
* ms.add(3, 2);
|
|
2251
|
-
* const filtered = ms.filter((k, c) => c > 1);
|
|
2252
|
-
* console.log([...filtered.keysDistinct()]); // [1, 3];
|
|
2253
|
-
*/
|
|
2254
|
-
filter(predicate: (key: K, count: number) => boolean): TreeMultiSet<K>;
|
|
2255
|
-
/**
|
|
2256
|
-
* Reduces the multiset to a single value.
|
|
2257
|
-
* @remarks Time O(n), Space O(1)
|
|
2258
|
-
|
|
2259
|
-
|
|
2260
|
-
|
|
2261
|
-
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
2973
|
|
|
2268
2974
|
|
|
2269
2975
|
|
|
@@ -2304,6 +3010,20 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
2304
3010
|
|
|
2305
3011
|
|
|
2306
3012
|
|
|
3013
|
+
* @example
|
|
3014
|
+
* // Aggregate
|
|
3015
|
+
* const ms = new TreeMultiSet<number>();
|
|
3016
|
+
* ms.add(1, 2);
|
|
3017
|
+
* ms.add(2, 3);
|
|
3018
|
+
* const sum = ms.reduce((acc, k, c) => acc + k * c, 0);
|
|
3019
|
+
* console.log(sum); // 8;
|
|
3020
|
+
*/
|
|
3021
|
+
reduce<U>(callback: (accumulator: U, key: K, count: number) => U, initialValue: U): U;
|
|
3022
|
+
/**
|
|
3023
|
+
* Maps keys and counts to a new TreeMultiSet.
|
|
3024
|
+
* When multiple keys map to the same new key, counts are merged (added).
|
|
3025
|
+
* @remarks Time O(n log n), Space O(n)
|
|
3026
|
+
|
|
2307
3027
|
|
|
2308
3028
|
|
|
2309
3029
|
|
|
@@ -2394,20 +3114,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
2394
3114
|
|
|
2395
3115
|
|
|
2396
3116
|
|
|
2397
|
-
* @example
|
|
2398
|
-
* // Aggregate
|
|
2399
|
-
* const ms = new TreeMultiSet<number>();
|
|
2400
|
-
* ms.add(1, 2);
|
|
2401
|
-
* ms.add(2, 3);
|
|
2402
|
-
* const sum = ms.reduce((acc, k, c) => acc + k * c, 0);
|
|
2403
|
-
* console.log(sum); // 8;
|
|
2404
|
-
*/
|
|
2405
|
-
reduce<U>(callback: (accumulator: U, key: K, count: number) => U, initialValue: U): U;
|
|
2406
|
-
/**
|
|
2407
|
-
* Maps keys and counts to a new TreeMultiSet.
|
|
2408
|
-
* When multiple keys map to the same new key, counts are merged (added).
|
|
2409
|
-
* @remarks Time O(n log n), Space O(n)
|
|
2410
|
-
|
|
2411
3117
|
|
|
2412
3118
|
|
|
2413
3119
|
|
|
@@ -2496,6 +3202,21 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
2496
3202
|
|
|
2497
3203
|
|
|
2498
3204
|
|
|
3205
|
+
* @example
|
|
3206
|
+
* // Transform
|
|
3207
|
+
* const ms = new TreeMultiSet<number>();
|
|
3208
|
+
* ms.add(1, 2);
|
|
3209
|
+
* ms.add(2, 3);
|
|
3210
|
+
* const doubled = ms.map((k, c) => [k * 10, c] as [number, number]);
|
|
3211
|
+
* console.log([...doubled.keysDistinct()]); // [10, 20];
|
|
3212
|
+
*/
|
|
3213
|
+
map<K2>(mapper: (key: K, count: number) => [K2, number], options?: {
|
|
3214
|
+
comparator?: Comparator<K2>;
|
|
3215
|
+
}): TreeMultiSet<K2>;
|
|
3216
|
+
/**
|
|
3217
|
+
* Creates an independent copy of this multiset.
|
|
3218
|
+
* @remarks Time O(n log n), Space O(n)
|
|
3219
|
+
|
|
2499
3220
|
|
|
2500
3221
|
|
|
2501
3222
|
|
|
@@ -2546,21 +3267,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
2546
3267
|
|
|
2547
3268
|
|
|
2548
3269
|
|
|
2549
|
-
* @example
|
|
2550
|
-
* // Transform
|
|
2551
|
-
* const ms = new TreeMultiSet<number>();
|
|
2552
|
-
* ms.add(1, 2);
|
|
2553
|
-
* ms.add(2, 3);
|
|
2554
|
-
* const doubled = ms.map((k, c) => [k * 10, c] as [number, number]);
|
|
2555
|
-
* console.log([...doubled.keysDistinct()]); // [10, 20];
|
|
2556
|
-
*/
|
|
2557
|
-
map<K2>(mapper: (key: K, count: number) => [K2, number], options?: {
|
|
2558
|
-
comparator?: Comparator<K2>;
|
|
2559
|
-
}): TreeMultiSet<K2>;
|
|
2560
|
-
/**
|
|
2561
|
-
* Creates an independent copy of this multiset.
|
|
2562
|
-
* @remarks Time O(n log n), Space O(n)
|
|
2563
|
-
|
|
2564
3270
|
|
|
2565
3271
|
|
|
2566
3272
|
|
|
@@ -2667,6 +3373,94 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
2667
3373
|
|
|
2668
3374
|
|
|
2669
3375
|
|
|
3376
|
+
* @example
|
|
3377
|
+
* // Order-statistic on BST
|
|
3378
|
+
* const tree = new TreeMultiSet<number>([30, 10, 50, 20, 40], { enableOrderStatistic: true });
|
|
3379
|
+
* console.log(tree.getByRank(0)); // 10;
|
|
3380
|
+
* console.log(tree.getByRank(4)); // 50;
|
|
3381
|
+
* console.log(tree.getRank(30)); // 2;
|
|
3382
|
+
*/
|
|
3383
|
+
getByRank(k: number): K | undefined;
|
|
3384
|
+
/**
|
|
3385
|
+
* Get the rank of a key in sorted order
|
|
3386
|
+
* @example
|
|
3387
|
+
* // Get the rank of a key in sorted order
|
|
3388
|
+
* const tree = new TreeMultiSet<number>(
|
|
3389
|
+
* [10, 20, 30, 40, 50],
|
|
3390
|
+
* { enableOrderStatistic: true }
|
|
3391
|
+
* );
|
|
3392
|
+
* console.log(tree.getRank(10)); // 0; // smallest → rank 0
|
|
3393
|
+
* console.log(tree.getRank(30)); // 2; // 2 elements before 30 in tree order
|
|
3394
|
+
* console.log(tree.getRank(50)); // 4; // largest → rank 4
|
|
3395
|
+
* console.log(tree.getRank(25)); // 2;
|
|
3396
|
+
*/
|
|
3397
|
+
getRank(key: K): number;
|
|
3398
|
+
/**
|
|
3399
|
+
* Get elements by rank range
|
|
3400
|
+
|
|
3401
|
+
|
|
3402
|
+
|
|
3403
|
+
|
|
3404
|
+
|
|
3405
|
+
|
|
3406
|
+
|
|
3407
|
+
|
|
3408
|
+
|
|
3409
|
+
* @example
|
|
3410
|
+
* // Pagination by position in tree order
|
|
3411
|
+
* const tree = new TreeMultiSet<number>(
|
|
3412
|
+
* [10, 20, 30, 40, 50, 60, 70, 80, 90],
|
|
3413
|
+
* { enableOrderStatistic: true }
|
|
3414
|
+
* );
|
|
3415
|
+
* const pageSize = 3;
|
|
3416
|
+
*
|
|
3417
|
+
* // Page 1
|
|
3418
|
+
* console.log(tree.rangeByRank(0, pageSize - 1)); // [10, 20, 30];
|
|
3419
|
+
* // Page 2
|
|
3420
|
+
* console.log(tree.rangeByRank(pageSize, 2 * pageSize - 1)); // [40, 50, 60];
|
|
3421
|
+
* // Page 3
|
|
3422
|
+
* console.log(tree.rangeByRank(2 * pageSize, 3 * pageSize - 1)); // [70, 80, 90];
|
|
3423
|
+
*/
|
|
3424
|
+
rangeByRank(start: number, end: number): K[];
|
|
3425
|
+
/**
|
|
3426
|
+
* Deep copy
|
|
3427
|
+
|
|
3428
|
+
|
|
3429
|
+
|
|
3430
|
+
|
|
3431
|
+
|
|
3432
|
+
|
|
3433
|
+
|
|
3434
|
+
|
|
3435
|
+
|
|
3436
|
+
|
|
3437
|
+
|
|
3438
|
+
|
|
3439
|
+
|
|
3440
|
+
|
|
3441
|
+
|
|
3442
|
+
|
|
3443
|
+
|
|
3444
|
+
|
|
3445
|
+
|
|
3446
|
+
|
|
3447
|
+
|
|
3448
|
+
|
|
3449
|
+
|
|
3450
|
+
|
|
3451
|
+
* @example
|
|
3452
|
+
* // Deep clone
|
|
3453
|
+
* const ms = new TreeMultiSet<number>();
|
|
3454
|
+
* ms.add(1, 3);
|
|
3455
|
+
* const copy = ms.clone();
|
|
3456
|
+
* copy.deleteAll(1);
|
|
3457
|
+
* console.log(ms.has(1)); // true;
|
|
3458
|
+
*/
|
|
3459
|
+
clone(): TreeMultiSet<K>;
|
|
3460
|
+
/**
|
|
3461
|
+
* Returns keys within the given range.
|
|
3462
|
+
* @remarks Time O(log n + k), Space O(k) where k is result size
|
|
3463
|
+
|
|
2670
3464
|
|
|
2671
3465
|
|
|
2672
3466
|
|
|
@@ -2699,19 +3493,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
2699
3493
|
|
|
2700
3494
|
|
|
2701
3495
|
|
|
2702
|
-
* @example
|
|
2703
|
-
* // Deep clone
|
|
2704
|
-
* const ms = new TreeMultiSet<number>();
|
|
2705
|
-
* ms.add(1, 3);
|
|
2706
|
-
* const copy = ms.clone();
|
|
2707
|
-
* copy.deleteAll(1);
|
|
2708
|
-
* console.log(ms.has(1)); // true;
|
|
2709
|
-
*/
|
|
2710
|
-
clone(): TreeMultiSet<K>;
|
|
2711
|
-
/**
|
|
2712
|
-
* Returns keys within the given range.
|
|
2713
|
-
* @remarks Time O(log n + k), Space O(k) where k is result size
|
|
2714
|
-
|
|
2715
3496
|
|
|
2716
3497
|
|
|
2717
3498
|
|
|
@@ -2952,6 +3733,46 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
2952
3733
|
|
|
2953
3734
|
|
|
2954
3735
|
|
|
3736
|
+
|
|
3737
|
+
|
|
3738
|
+
|
|
3739
|
+
|
|
3740
|
+
|
|
3741
|
+
|
|
3742
|
+
|
|
3743
|
+
|
|
3744
|
+
|
|
3745
|
+
|
|
3746
|
+
|
|
3747
|
+
|
|
3748
|
+
|
|
3749
|
+
|
|
3750
|
+
|
|
3751
|
+
|
|
3752
|
+
|
|
3753
|
+
|
|
3754
|
+
|
|
3755
|
+
|
|
3756
|
+
|
|
3757
|
+
|
|
3758
|
+
|
|
3759
|
+
|
|
3760
|
+
|
|
3761
|
+
|
|
3762
|
+
|
|
3763
|
+
|
|
3764
|
+
|
|
3765
|
+
|
|
3766
|
+
|
|
3767
|
+
|
|
3768
|
+
|
|
3769
|
+
|
|
3770
|
+
|
|
3771
|
+
|
|
3772
|
+
|
|
3773
|
+
|
|
3774
|
+
|
|
3775
|
+
|
|
2955
3776
|
|
|
2956
3777
|
|
|
2957
3778
|
|