data-structure-typed 2.5.0 → 2.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.vitepress/cache/deps_temp_51f5f1b0/chunk-7OIKW5WK.js +12984 -0
- package/.vitepress/cache/deps_temp_51f5f1b0/package.json +3 -0
- package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vue_devtools-api.js +4505 -0
- package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vueuse_core.js +9731 -0
- package/.vitepress/cache/deps_temp_51f5f1b0/vue.js +347 -0
- package/CHANGELOG.md +3 -1
- package/README.md +63 -26
- package/dist/cjs/binary-tree.cjs +23698 -0
- package/dist/cjs/graph.cjs +5236 -0
- package/dist/cjs/hash.cjs +1262 -0
- package/dist/cjs/heap.cjs +1540 -0
- package/dist/cjs/index.cjs +28244 -14795
- package/dist/cjs/linked-list.cjs +4370 -0
- package/dist/cjs/matrix.cjs +1042 -0
- package/dist/cjs/priority-queue.cjs +1314 -0
- package/dist/cjs/queue.cjs +4090 -0
- package/dist/cjs/stack.cjs +861 -0
- package/dist/cjs/trie.cjs +1173 -0
- package/dist/cjs-legacy/binary-tree.cjs +23730 -0
- package/dist/cjs-legacy/graph.cjs +5234 -0
- package/dist/cjs-legacy/hash.cjs +1262 -0
- package/dist/cjs-legacy/heap.cjs +1537 -0
- package/dist/cjs-legacy/index.cjs +28239 -14790
- package/dist/cjs-legacy/linked-list.cjs +4376 -0
- package/dist/cjs-legacy/matrix.cjs +1045 -0
- package/dist/cjs-legacy/priority-queue.cjs +1312 -0
- package/dist/cjs-legacy/queue.cjs +4088 -0
- package/dist/cjs-legacy/stack.cjs +861 -0
- package/dist/cjs-legacy/trie.cjs +1172 -0
- package/dist/esm/binary-tree.mjs +23683 -0
- package/dist/esm/graph.mjs +5223 -0
- package/dist/esm/hash.mjs +1259 -0
- package/dist/esm/heap.mjs +1534 -0
- package/dist/esm/index.mjs +28242 -14796
- package/dist/esm/linked-list.mjs +4363 -0
- package/dist/esm/matrix.mjs +1038 -0
- package/dist/esm/priority-queue.mjs +1310 -0
- package/dist/esm/queue.mjs +4086 -0
- package/dist/esm/stack.mjs +859 -0
- package/dist/esm/trie.mjs +1170 -0
- package/dist/esm-legacy/binary-tree.mjs +23715 -0
- package/dist/esm-legacy/graph.mjs +5221 -0
- package/dist/esm-legacy/hash.mjs +1259 -0
- package/dist/esm-legacy/heap.mjs +1531 -0
- package/dist/esm-legacy/index.mjs +28237 -14791
- package/dist/esm-legacy/linked-list.mjs +4369 -0
- package/dist/esm-legacy/matrix.mjs +1041 -0
- package/dist/esm-legacy/priority-queue.mjs +1308 -0
- package/dist/esm-legacy/queue.mjs +4084 -0
- package/dist/esm-legacy/stack.mjs +859 -0
- package/dist/esm-legacy/trie.mjs +1169 -0
- package/dist/types/data-structures/base/index.d.ts +1 -0
- package/dist/types/data-structures/base/iterable-entry-base.d.ts +8 -8
- package/dist/types/data-structures/base/linear-base.d.ts +3 -3
- package/dist/types/data-structures/binary-tree/avl-tree.d.ts +240 -0
- package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +280 -0
- package/dist/types/data-structures/binary-tree/binary-tree.d.ts +502 -2
- package/dist/types/data-structures/binary-tree/bst.d.ts +481 -1
- package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +380 -0
- package/dist/types/data-structures/binary-tree/segment-tree.d.ts +120 -1
- package/dist/types/data-structures/binary-tree/tree-map.d.ts +2764 -384
- package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +2753 -353
- package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +2241 -321
- package/dist/types/data-structures/binary-tree/tree-set.d.ts +2554 -274
- package/dist/types/data-structures/graph/abstract-graph.d.ts +4 -4
- package/dist/types/data-structures/graph/directed-graph.d.ts +200 -0
- package/dist/types/data-structures/graph/undirected-graph.d.ts +180 -0
- package/dist/types/data-structures/hash/hash-map.d.ts +230 -10
- package/dist/types/data-structures/heap/heap.d.ts +280 -0
- package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +343 -3
- package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +303 -3
- package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +362 -2
- package/dist/types/data-structures/matrix/matrix.d.ts +160 -0
- package/dist/types/data-structures/queue/deque.d.ts +304 -4
- package/dist/types/data-structures/queue/queue.d.ts +240 -0
- package/dist/types/data-structures/stack/stack.d.ts +200 -0
- package/dist/types/data-structures/trie/trie.d.ts +244 -4
- package/dist/types/interfaces/graph.d.ts +1 -1
- package/dist/types/types/common.d.ts +2 -2
- package/dist/types/types/data-structures/heap/heap.d.ts +1 -0
- package/dist/types/types/data-structures/priority-queue/priority-queue.d.ts +1 -0
- package/dist/types/types/utils/validate-type.d.ts +4 -4
- package/dist/umd/data-structure-typed.js +28022 -14573
- package/dist/umd/data-structure-typed.min.js +9 -3
- package/docs-site-docusaurus/README.md +41 -0
- package/docs-site-docusaurus/docs/api/README.md +52 -0
- package/docs-site-docusaurus/docs/api/classes/AVLTree.md +6130 -0
- package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +282 -0
- package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +2266 -0
- package/docs-site-docusaurus/docs/api/classes/BST.md +5831 -0
- package/docs-site-docusaurus/docs/api/classes/BSTNode.md +333 -0
- package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +455 -0
- package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +4647 -0
- package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +331 -0
- package/docs-site-docusaurus/docs/api/classes/Deque.md +2767 -0
- package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +2999 -0
- package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +2685 -0
- package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +221 -0
- package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +253 -0
- package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +21 -0
- package/docs-site-docusaurus/docs/api/classes/HashMap.md +1333 -0
- package/docs-site-docusaurus/docs/api/classes/Heap.md +1881 -0
- package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +800 -0
- package/docs-site-docusaurus/docs/api/classes/IterableEntryBase.md +644 -0
- package/docs-site-docusaurus/docs/api/classes/LinearBase.md +1632 -0
- package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +1853 -0
- package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +1108 -0
- package/docs-site-docusaurus/docs/api/classes/LinkedListNode.md +156 -0
- package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +2824 -0
- package/docs-site-docusaurus/docs/api/classes/MapGraph.md +2929 -0
- package/docs-site-docusaurus/docs/api/classes/Matrix.md +1026 -0
- package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +1866 -0
- package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +1883 -0
- package/docs-site-docusaurus/docs/api/classes/MinHeap.md +1879 -0
- package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +1882 -0
- package/docs-site-docusaurus/docs/api/classes/Navigator.md +109 -0
- package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +1839 -0
- package/docs-site-docusaurus/docs/api/classes/Queue.md +2244 -0
- package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +6374 -0
- package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +372 -0
- package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +2897 -0
- package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +169 -0
- package/docs-site-docusaurus/docs/api/classes/SkipList.md +1229 -0
- package/docs-site-docusaurus/docs/api/classes/Stack.md +1573 -0
- package/docs-site-docusaurus/docs/api/classes/TreeMap.md +1257 -0
- package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +1475 -0
- package/docs-site-docusaurus/docs/api/classes/TreeSet.md +1117 -0
- package/docs-site-docusaurus/docs/api/classes/Trie.md +1708 -0
- package/docs-site-docusaurus/docs/api/classes/TrieNode.md +199 -0
- package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +2979 -0
- package/docs-site-docusaurus/docs/guide/_category_.json +6 -0
- package/docs-site-docusaurus/docs/guide/architecture.md +613 -0
- package/docs-site-docusaurus/docs/guide/concepts.md +420 -0
- package/docs-site-docusaurus/docs/guide/guides.md +611 -0
- package/docs-site-docusaurus/docs/guide/installation.md +60 -0
- package/docs-site-docusaurus/docs/guide/integrations.md +823 -0
- package/docs-site-docusaurus/docs/guide/overview.md +638 -0
- package/docs-site-docusaurus/docs/guide/performance.md +833 -0
- package/docs-site-docusaurus/docs/guide/quick-start.md +73 -0
- package/docs-site-docusaurus/docusaurus.config.ts +159 -0
- package/docs-site-docusaurus/fix-mdx-generics.mjs +75 -0
- package/docs-site-docusaurus/package-lock.json +18667 -0
- package/docs-site-docusaurus/package.json +50 -0
- package/docs-site-docusaurus/prefix-class-to-methods.mjs +48 -0
- package/docs-site-docusaurus/sidebars.ts +23 -0
- package/docs-site-docusaurus/sort-protected.mjs +87 -0
- package/docs-site-docusaurus/src/css/custom.css +96 -0
- package/docs-site-docusaurus/src/pages/index.module.css +13 -0
- package/docs-site-docusaurus/src/pages/index.tsx +71 -0
- package/docs-site-docusaurus/src/pages/markdown-page.md +7 -0
- package/docs-site-docusaurus/src/theme/TOCItems/index.tsx +34 -0
- package/docs-site-docusaurus/static/.nojekyll +0 -0
- package/docs-site-docusaurus/static/img/docusaurus-social-card.jpg +0 -0
- package/docs-site-docusaurus/static/img/docusaurus.png +0 -0
- package/docs-site-docusaurus/static/img/favicon.ico +0 -0
- package/docs-site-docusaurus/static/img/favicon.png +0 -0
- package/docs-site-docusaurus/static/img/logo-180.png +0 -0
- package/docs-site-docusaurus/static/img/logo.jpg +0 -0
- package/docs-site-docusaurus/static/img/logo.png +0 -0
- package/docs-site-docusaurus/static/img/logo.svg +1 -0
- package/docs-site-docusaurus/static/img/og-image.png +0 -0
- package/docs-site-docusaurus/static/img/undraw_docusaurus_mountain.svg +171 -0
- package/docs-site-docusaurus/static/img/undraw_docusaurus_react.svg +170 -0
- package/docs-site-docusaurus/static/img/undraw_docusaurus_tree.svg +40 -0
- package/docs-site-docusaurus/static/robots.txt +4 -0
- package/docs-site-docusaurus/typedoc.json +23 -0
- package/package.json +106 -10
- package/src/data-structures/base/index.ts +1 -0
- package/src/data-structures/base/iterable-entry-base.ts +8 -8
- package/src/data-structures/base/linear-base.ts +3 -3
- package/src/data-structures/binary-tree/avl-tree.ts +240 -0
- package/src/data-structures/binary-tree/binary-indexed-tree.ts +281 -1
- package/src/data-structures/binary-tree/binary-tree.ts +502 -2
- package/src/data-structures/binary-tree/bst.ts +481 -1
- package/src/data-structures/binary-tree/red-black-tree.ts +380 -0
- package/src/data-structures/binary-tree/segment-tree.ts +121 -2
- package/src/data-structures/binary-tree/tree-map.ts +2862 -482
- package/src/data-structures/binary-tree/tree-multi-map.ts +2963 -563
- package/src/data-structures/binary-tree/tree-multi-set.ts +2399 -479
- package/src/data-structures/binary-tree/tree-set.ts +2685 -405
- package/src/data-structures/graph/abstract-graph.ts +4 -4
- package/src/data-structures/graph/directed-graph.ts +200 -0
- package/src/data-structures/graph/undirected-graph.ts +180 -0
- package/src/data-structures/hash/hash-map.ts +235 -15
- package/src/data-structures/heap/heap.ts +280 -0
- package/src/data-structures/linked-list/doubly-linked-list.ts +343 -3
- package/src/data-structures/linked-list/singly-linked-list.ts +303 -3
- package/src/data-structures/linked-list/skip-linked-list.ts +362 -2
- package/src/data-structures/matrix/matrix.ts +161 -1
- package/src/data-structures/queue/deque.ts +305 -5
- package/src/data-structures/queue/queue.ts +240 -0
- package/src/data-structures/stack/stack.ts +200 -0
- package/src/data-structures/trie/trie.ts +245 -5
- package/src/interfaces/graph.ts +1 -1
- package/src/types/common.ts +2 -2
- package/src/types/data-structures/heap/heap.ts +1 -0
- package/src/types/data-structures/priority-queue/priority-queue.ts +1 -0
- package/src/types/utils/validate-type.ts +4 -4
- package/vercel.json +6 -0
- package/dist/leetcode/avl-tree-counter.mjs +0 -2957
- package/dist/leetcode/avl-tree-multi-map.mjs +0 -2889
- package/dist/leetcode/avl-tree.mjs +0 -2720
- package/dist/leetcode/binary-tree.mjs +0 -1594
- package/dist/leetcode/bst.mjs +0 -2398
- package/dist/leetcode/deque.mjs +0 -683
- package/dist/leetcode/directed-graph.mjs +0 -1733
- package/dist/leetcode/doubly-linked-list.mjs +0 -709
- package/dist/leetcode/hash-map.mjs +0 -493
- package/dist/leetcode/heap.mjs +0 -542
- package/dist/leetcode/max-heap.mjs +0 -375
- package/dist/leetcode/max-priority-queue.mjs +0 -383
- package/dist/leetcode/min-heap.mjs +0 -363
- package/dist/leetcode/min-priority-queue.mjs +0 -371
- package/dist/leetcode/priority-queue.mjs +0 -363
- package/dist/leetcode/queue.mjs +0 -943
- package/dist/leetcode/red-black-tree.mjs +0 -2765
- package/dist/leetcode/singly-linked-list.mjs +0 -754
- package/dist/leetcode/stack.mjs +0 -217
- package/dist/leetcode/tree-counter.mjs +0 -3039
- package/dist/leetcode/tree-multi-map.mjs +0 -2913
- package/dist/leetcode/trie.mjs +0 -413
- package/dist/leetcode/undirected-graph.mjs +0 -1650
|
@@ -44,6 +44,26 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
44
44
|
* Number of distinct keys.
|
|
45
45
|
* @remarks Time O(1), Space O(1)
|
|
46
46
|
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
47
67
|
|
|
48
68
|
* @example
|
|
49
69
|
* // Unique key count
|
|
@@ -94,14 +114,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
94
114
|
|
|
95
115
|
|
|
96
116
|
|
|
97
|
-
* @example
|
|
98
|
-
* // Check empty
|
|
99
|
-
* console.log(new TreeMultiSet().isEmpty()); // true;
|
|
100
|
-
*/
|
|
101
|
-
isEmpty(): boolean;
|
|
102
|
-
/**
|
|
103
|
-
* Whether the multiset contains the given key.
|
|
104
|
-
* @remarks Time O(log n), Space O(1)
|
|
105
117
|
|
|
106
118
|
|
|
107
119
|
|
|
@@ -143,30 +155,8 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
143
155
|
|
|
144
156
|
|
|
145
157
|
|
|
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
158
|
|
|
158
159
|
|
|
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
160
|
|
|
171
161
|
|
|
172
162
|
|
|
@@ -199,32 +189,38 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
199
189
|
|
|
200
190
|
|
|
201
191
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
|
|
216
215
|
|
|
217
216
|
|
|
218
217
|
* @example
|
|
219
|
-
* //
|
|
220
|
-
*
|
|
221
|
-
* ms.setCount(1, 3);
|
|
222
|
-
* console.log(ms.count(1)); // 3;
|
|
218
|
+
* // Check empty
|
|
219
|
+
* console.log(new TreeMultiSet().isEmpty()); // true;
|
|
223
220
|
*/
|
|
224
|
-
|
|
221
|
+
isEmpty(): boolean;
|
|
225
222
|
/**
|
|
226
|
-
*
|
|
227
|
-
* @returns True if any occurrence was removed.
|
|
223
|
+
* Whether the multiset contains the given key.
|
|
228
224
|
* @remarks Time O(log n), Space O(1)
|
|
229
225
|
|
|
230
226
|
|
|
@@ -267,44 +263,10 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
267
263
|
|
|
268
264
|
|
|
269
265
|
|
|
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
266
|
|
|
283
267
|
|
|
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
268
|
|
|
296
269
|
|
|
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
270
|
|
|
309
271
|
|
|
310
272
|
|
|
@@ -343,21 +305,26 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
343
305
|
|
|
344
306
|
|
|
345
307
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
|
|
361
328
|
|
|
362
329
|
|
|
363
330
|
|
|
@@ -397,48 +364,2142 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
397
364
|
|
|
398
365
|
|
|
399
366
|
* @example
|
|
400
|
-
* //
|
|
367
|
+
* // Check existence
|
|
401
368
|
* const ms = new TreeMultiSet<number>();
|
|
402
|
-
* ms.add(1
|
|
403
|
-
* ms.
|
|
404
|
-
* console.log(ms.
|
|
369
|
+
* ms.add(1);
|
|
370
|
+
* console.log(ms.has(1)); // true;
|
|
371
|
+
* console.log(ms.has(2)); // false;
|
|
405
372
|
*/
|
|
406
|
-
|
|
373
|
+
has(key: K): boolean;
|
|
407
374
|
/**
|
|
408
|
-
* Returns
|
|
409
|
-
* @remarks Time O(n), Space O(
|
|
375
|
+
* Returns the count of occurrences for the given key.
|
|
376
|
+
* @remarks Time O(log n), Space O(1)
|
|
377
|
+
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
|
|
396
|
+
|
|
410
397
|
|
|
411
398
|
|
|
412
399
|
* @example
|
|
413
|
-
* //
|
|
400
|
+
* // Get occurrence count
|
|
414
401
|
* const ms = new TreeMultiSet<number>();
|
|
415
|
-
* ms.add(1,
|
|
416
|
-
* ms.
|
|
417
|
-
* console.log(ms.toDistinctArray()); // [1, 2];
|
|
402
|
+
* ms.add(1, 5);
|
|
403
|
+
* console.log(ms.count(1)); // 5;
|
|
418
404
|
*/
|
|
419
|
-
|
|
405
|
+
count(key: K): number;
|
|
420
406
|
/**
|
|
421
|
-
*
|
|
422
|
-
* @
|
|
407
|
+
* Add `n` occurrences of `key`.
|
|
408
|
+
* @returns True if the multiset changed.
|
|
409
|
+
* @remarks Time O(log n), Space O(1)
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
|
|
421
|
+
|
|
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
|
+
* @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
|
+
|
|
557
|
+
|
|
558
|
+
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
|
|
565
|
+
|
|
566
|
+
|
|
567
|
+
|
|
568
|
+
|
|
569
|
+
|
|
570
|
+
|
|
571
|
+
|
|
572
|
+
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
|
|
576
|
+
|
|
577
|
+
|
|
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
|
+
|
|
590
|
+
|
|
591
|
+
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
|
|
595
|
+
|
|
596
|
+
|
|
597
|
+
|
|
598
|
+
|
|
599
|
+
|
|
600
|
+
|
|
601
|
+
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
|
|
605
|
+
|
|
606
|
+
|
|
607
|
+
|
|
608
|
+
|
|
609
|
+
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
|
|
613
|
+
|
|
614
|
+
|
|
615
|
+
|
|
616
|
+
|
|
617
|
+
|
|
618
|
+
|
|
619
|
+
|
|
620
|
+
|
|
621
|
+
|
|
622
|
+
|
|
623
|
+
|
|
624
|
+
|
|
625
|
+
|
|
626
|
+
|
|
627
|
+
|
|
628
|
+
|
|
629
|
+
|
|
630
|
+
|
|
631
|
+
|
|
632
|
+
|
|
633
|
+
|
|
634
|
+
|
|
635
|
+
|
|
636
|
+
|
|
637
|
+
|
|
638
|
+
|
|
639
|
+
|
|
640
|
+
|
|
641
|
+
|
|
642
|
+
|
|
643
|
+
|
|
644
|
+
|
|
645
|
+
|
|
646
|
+
|
|
647
|
+
|
|
648
|
+
|
|
649
|
+
|
|
650
|
+
|
|
651
|
+
|
|
652
|
+
|
|
653
|
+
|
|
654
|
+
|
|
655
|
+
|
|
656
|
+
|
|
657
|
+
|
|
658
|
+
|
|
659
|
+
|
|
660
|
+
|
|
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
|
+
* @example
|
|
731
|
+
* // Remove one occurrence
|
|
732
|
+
* const ms = new TreeMultiSet<number>();
|
|
733
|
+
* ms.add(1, 3);
|
|
734
|
+
* ms.delete(1);
|
|
735
|
+
* console.log(ms.count(1)); // 2;
|
|
736
|
+
*/
|
|
737
|
+
delete(key: K, n?: number): boolean;
|
|
738
|
+
/**
|
|
739
|
+
* Delete all occurrences of the given key.
|
|
740
|
+
* @returns True if any occurrence was removed.
|
|
741
|
+
* @remarks Time O(log n), Space O(1)
|
|
742
|
+
|
|
743
|
+
|
|
744
|
+
|
|
745
|
+
|
|
746
|
+
|
|
747
|
+
|
|
748
|
+
|
|
749
|
+
|
|
750
|
+
|
|
751
|
+
|
|
752
|
+
|
|
753
|
+
|
|
754
|
+
|
|
755
|
+
|
|
756
|
+
|
|
757
|
+
|
|
758
|
+
|
|
759
|
+
|
|
760
|
+
|
|
761
|
+
|
|
762
|
+
|
|
763
|
+
|
|
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
|
+
|
|
777
|
+
|
|
778
|
+
|
|
779
|
+
|
|
780
|
+
|
|
781
|
+
|
|
782
|
+
|
|
783
|
+
|
|
784
|
+
|
|
785
|
+
|
|
786
|
+
|
|
787
|
+
|
|
788
|
+
|
|
789
|
+
|
|
790
|
+
|
|
791
|
+
|
|
792
|
+
|
|
793
|
+
|
|
794
|
+
|
|
795
|
+
|
|
796
|
+
|
|
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
|
+
|
|
809
|
+
|
|
810
|
+
|
|
811
|
+
|
|
812
|
+
|
|
813
|
+
|
|
814
|
+
|
|
815
|
+
|
|
816
|
+
|
|
817
|
+
|
|
818
|
+
|
|
819
|
+
|
|
820
|
+
|
|
821
|
+
|
|
822
|
+
|
|
823
|
+
|
|
824
|
+
|
|
825
|
+
|
|
826
|
+
|
|
827
|
+
|
|
828
|
+
|
|
829
|
+
|
|
830
|
+
|
|
831
|
+
|
|
832
|
+
|
|
833
|
+
|
|
834
|
+
|
|
835
|
+
|
|
836
|
+
|
|
837
|
+
|
|
838
|
+
|
|
839
|
+
|
|
840
|
+
|
|
841
|
+
|
|
842
|
+
|
|
843
|
+
|
|
844
|
+
|
|
845
|
+
|
|
846
|
+
|
|
847
|
+
|
|
848
|
+
|
|
849
|
+
|
|
850
|
+
|
|
851
|
+
|
|
852
|
+
|
|
853
|
+
|
|
854
|
+
|
|
855
|
+
|
|
856
|
+
|
|
857
|
+
|
|
858
|
+
|
|
859
|
+
|
|
860
|
+
|
|
861
|
+
|
|
862
|
+
|
|
863
|
+
|
|
864
|
+
|
|
865
|
+
|
|
866
|
+
|
|
867
|
+
|
|
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
|
+
* @example
|
|
947
|
+
* // Iterate entries
|
|
948
|
+
* const ms = new TreeMultiSet<number>();
|
|
949
|
+
* ms.add(1, 2);
|
|
950
|
+
* console.log([...ms.entries()].length); // > 0;
|
|
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
|
|
956
|
+
*/
|
|
957
|
+
[Symbol.iterator](): Iterator<K>;
|
|
958
|
+
/**
|
|
959
|
+
* Returns an array with all elements (expanded).
|
|
960
|
+
* @remarks Time O(size), Space O(size)
|
|
961
|
+
|
|
962
|
+
|
|
963
|
+
|
|
964
|
+
|
|
965
|
+
|
|
966
|
+
|
|
967
|
+
|
|
968
|
+
|
|
969
|
+
|
|
970
|
+
|
|
971
|
+
|
|
972
|
+
|
|
973
|
+
|
|
974
|
+
|
|
975
|
+
|
|
976
|
+
|
|
977
|
+
|
|
978
|
+
|
|
979
|
+
|
|
980
|
+
|
|
981
|
+
|
|
982
|
+
|
|
983
|
+
|
|
984
|
+
|
|
985
|
+
|
|
986
|
+
|
|
987
|
+
|
|
988
|
+
|
|
989
|
+
|
|
990
|
+
|
|
991
|
+
|
|
992
|
+
|
|
993
|
+
|
|
994
|
+
|
|
995
|
+
|
|
996
|
+
|
|
997
|
+
|
|
998
|
+
|
|
999
|
+
|
|
1000
|
+
|
|
1001
|
+
|
|
1002
|
+
|
|
1003
|
+
|
|
1004
|
+
|
|
1005
|
+
|
|
1006
|
+
|
|
1007
|
+
|
|
1008
|
+
|
|
1009
|
+
|
|
1010
|
+
|
|
1011
|
+
|
|
1012
|
+
|
|
1013
|
+
|
|
1014
|
+
|
|
1015
|
+
|
|
1016
|
+
|
|
1017
|
+
|
|
1018
|
+
|
|
1019
|
+
|
|
1020
|
+
|
|
1021
|
+
|
|
1022
|
+
|
|
1023
|
+
|
|
1024
|
+
|
|
1025
|
+
|
|
1026
|
+
|
|
1027
|
+
|
|
1028
|
+
|
|
1029
|
+
|
|
1030
|
+
|
|
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
|
+
* @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
|
+
|
|
1111
|
+
|
|
1112
|
+
|
|
1113
|
+
|
|
1114
|
+
|
|
1115
|
+
|
|
1116
|
+
|
|
1117
|
+
|
|
1118
|
+
|
|
1119
|
+
|
|
1120
|
+
|
|
1121
|
+
|
|
1122
|
+
|
|
1123
|
+
|
|
1124
|
+
|
|
1125
|
+
|
|
1126
|
+
|
|
1127
|
+
|
|
1128
|
+
|
|
1129
|
+
|
|
1130
|
+
|
|
1131
|
+
|
|
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
|
+
|
|
1144
|
+
|
|
1145
|
+
|
|
1146
|
+
|
|
1147
|
+
|
|
1148
|
+
|
|
1149
|
+
|
|
1150
|
+
|
|
1151
|
+
|
|
1152
|
+
|
|
1153
|
+
|
|
1154
|
+
|
|
1155
|
+
|
|
1156
|
+
|
|
1157
|
+
|
|
1158
|
+
|
|
1159
|
+
|
|
1160
|
+
|
|
1161
|
+
|
|
1162
|
+
|
|
1163
|
+
|
|
1164
|
+
|
|
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
|
+
|
|
1183
|
+
|
|
1184
|
+
|
|
1185
|
+
|
|
1186
|
+
|
|
1187
|
+
|
|
1188
|
+
|
|
1189
|
+
|
|
1190
|
+
|
|
1191
|
+
|
|
1192
|
+
|
|
1193
|
+
|
|
1194
|
+
|
|
1195
|
+
|
|
1196
|
+
|
|
1197
|
+
|
|
1198
|
+
|
|
1199
|
+
|
|
1200
|
+
|
|
1201
|
+
|
|
1202
|
+
|
|
1203
|
+
|
|
1204
|
+
|
|
1205
|
+
|
|
1206
|
+
|
|
1207
|
+
|
|
1208
|
+
|
|
1209
|
+
|
|
1210
|
+
|
|
1211
|
+
|
|
1212
|
+
|
|
1213
|
+
|
|
1214
|
+
|
|
1215
|
+
|
|
1216
|
+
|
|
1217
|
+
|
|
1218
|
+
|
|
1219
|
+
|
|
1220
|
+
|
|
1221
|
+
|
|
1222
|
+
|
|
1223
|
+
|
|
1224
|
+
|
|
1225
|
+
|
|
1226
|
+
|
|
1227
|
+
|
|
1228
|
+
|
|
1229
|
+
|
|
1230
|
+
|
|
1231
|
+
|
|
1232
|
+
|
|
1233
|
+
|
|
1234
|
+
|
|
1235
|
+
|
|
1236
|
+
|
|
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
|
+
* @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
|
+
|
|
1333
|
+
|
|
1334
|
+
|
|
1335
|
+
|
|
1336
|
+
|
|
1337
|
+
|
|
1338
|
+
|
|
1339
|
+
|
|
1340
|
+
|
|
1341
|
+
|
|
1342
|
+
|
|
1343
|
+
|
|
1344
|
+
|
|
1345
|
+
|
|
1346
|
+
|
|
1347
|
+
|
|
1348
|
+
|
|
1349
|
+
|
|
1350
|
+
|
|
1351
|
+
|
|
1352
|
+
|
|
1353
|
+
|
|
1354
|
+
* @example
|
|
1355
|
+
* // Smallest element
|
|
1356
|
+
* const ms = new TreeMultiSet<number>();
|
|
1357
|
+
* ms.add(3);
|
|
1358
|
+
* ms.add(1);
|
|
1359
|
+
* console.log(ms.first()); // 1;
|
|
1360
|
+
*/
|
|
1361
|
+
first(): K | undefined;
|
|
1362
|
+
/**
|
|
1363
|
+
* Returns the largest key, or undefined if empty.
|
|
1364
|
+
* @remarks Time O(log n), Space O(1)
|
|
1365
|
+
|
|
1366
|
+
|
|
1367
|
+
|
|
1368
|
+
|
|
1369
|
+
|
|
1370
|
+
|
|
1371
|
+
|
|
1372
|
+
|
|
1373
|
+
|
|
1374
|
+
|
|
1375
|
+
|
|
1376
|
+
|
|
1377
|
+
|
|
1378
|
+
|
|
1379
|
+
|
|
1380
|
+
|
|
1381
|
+
|
|
1382
|
+
|
|
1383
|
+
|
|
1384
|
+
|
|
1385
|
+
|
|
1386
|
+
|
|
1387
|
+
|
|
1388
|
+
* @example
|
|
1389
|
+
* // Largest element
|
|
1390
|
+
* const ms = new TreeMultiSet<number>();
|
|
1391
|
+
* ms.add(1);
|
|
1392
|
+
* ms.add(3);
|
|
1393
|
+
* console.log(ms.last()); // 3;
|
|
1394
|
+
*/
|
|
1395
|
+
last(): K | undefined;
|
|
1396
|
+
/**
|
|
1397
|
+
* Removes all occurrences of the smallest key and returns it.
|
|
1398
|
+
* @remarks Time O(log n), Space O(1)
|
|
1399
|
+
|
|
1400
|
+
|
|
1401
|
+
|
|
1402
|
+
|
|
1403
|
+
|
|
1404
|
+
|
|
1405
|
+
|
|
1406
|
+
|
|
1407
|
+
|
|
1408
|
+
|
|
1409
|
+
|
|
1410
|
+
|
|
1411
|
+
|
|
1412
|
+
|
|
1413
|
+
|
|
1414
|
+
|
|
1415
|
+
|
|
1416
|
+
|
|
1417
|
+
|
|
1418
|
+
|
|
1419
|
+
|
|
1420
|
+
|
|
1421
|
+
|
|
1422
|
+
* @example
|
|
1423
|
+
* // Remove and return smallest
|
|
1424
|
+
* const ms = new TreeMultiSet<number>();
|
|
1425
|
+
* ms.add(2);
|
|
1426
|
+
* ms.add(1);
|
|
1427
|
+
* console.log(ms.pollFirst()); // 1;
|
|
1428
|
+
* console.log(ms.has(1)); // false;
|
|
1429
|
+
*/
|
|
1430
|
+
pollFirst(): K | undefined;
|
|
1431
|
+
/**
|
|
1432
|
+
* Removes all occurrences of the largest key and returns it.
|
|
1433
|
+
* @remarks Time O(log n), Space O(1)
|
|
1434
|
+
|
|
1435
|
+
|
|
1436
|
+
|
|
1437
|
+
|
|
1438
|
+
|
|
1439
|
+
|
|
1440
|
+
|
|
1441
|
+
|
|
1442
|
+
|
|
1443
|
+
|
|
1444
|
+
|
|
1445
|
+
|
|
1446
|
+
|
|
1447
|
+
|
|
1448
|
+
|
|
1449
|
+
|
|
1450
|
+
|
|
1451
|
+
|
|
1452
|
+
|
|
1453
|
+
|
|
1454
|
+
|
|
1455
|
+
|
|
1456
|
+
|
|
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
|
+
|
|
1470
|
+
|
|
1471
|
+
|
|
1472
|
+
|
|
1473
|
+
|
|
1474
|
+
|
|
1475
|
+
|
|
1476
|
+
|
|
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
|
+
* @example
|
|
1579
|
+
* // Least key ≥ target
|
|
1580
|
+
* const ms = new TreeMultiSet<number>();
|
|
1581
|
+
* ms.add(10);
|
|
1582
|
+
* ms.add(20);
|
|
1583
|
+
* ms.add(30);
|
|
1584
|
+
* console.log(ms.ceiling(15)); // 20;
|
|
1585
|
+
*/
|
|
1586
|
+
ceiling(key: K): K | undefined;
|
|
1587
|
+
/**
|
|
1588
|
+
* Returns the largest key <= given key, or undefined.
|
|
1589
|
+
* @remarks Time O(log n), Space O(1)
|
|
1590
|
+
|
|
1591
|
+
|
|
1592
|
+
|
|
1593
|
+
|
|
1594
|
+
|
|
1595
|
+
|
|
1596
|
+
|
|
1597
|
+
|
|
1598
|
+
|
|
1599
|
+
|
|
1600
|
+
|
|
1601
|
+
|
|
1602
|
+
|
|
1603
|
+
|
|
1604
|
+
|
|
1605
|
+
|
|
1606
|
+
|
|
1607
|
+
|
|
1608
|
+
|
|
1609
|
+
|
|
1610
|
+
|
|
1611
|
+
|
|
1612
|
+
|
|
1613
|
+
|
|
1614
|
+
|
|
1615
|
+
|
|
1616
|
+
|
|
1617
|
+
|
|
1618
|
+
|
|
1619
|
+
|
|
1620
|
+
|
|
1621
|
+
|
|
1622
|
+
|
|
1623
|
+
|
|
1624
|
+
|
|
1625
|
+
|
|
1626
|
+
|
|
1627
|
+
|
|
1628
|
+
|
|
1629
|
+
|
|
1630
|
+
|
|
1631
|
+
|
|
1632
|
+
|
|
1633
|
+
|
|
1634
|
+
|
|
1635
|
+
|
|
1636
|
+
|
|
1637
|
+
|
|
1638
|
+
|
|
1639
|
+
|
|
1640
|
+
|
|
1641
|
+
|
|
1642
|
+
|
|
1643
|
+
|
|
1644
|
+
|
|
1645
|
+
|
|
1646
|
+
|
|
1647
|
+
|
|
1648
|
+
|
|
1649
|
+
|
|
1650
|
+
|
|
1651
|
+
|
|
1652
|
+
|
|
1653
|
+
|
|
1654
|
+
|
|
1655
|
+
|
|
1656
|
+
|
|
1657
|
+
|
|
1658
|
+
|
|
1659
|
+
|
|
1660
|
+
|
|
1661
|
+
|
|
1662
|
+
|
|
1663
|
+
|
|
1664
|
+
|
|
1665
|
+
|
|
1666
|
+
|
|
1667
|
+
|
|
1668
|
+
|
|
1669
|
+
|
|
1670
|
+
|
|
1671
|
+
|
|
1672
|
+
|
|
1673
|
+
|
|
1674
|
+
|
|
1675
|
+
|
|
1676
|
+
|
|
1677
|
+
|
|
1678
|
+
|
|
1679
|
+
|
|
1680
|
+
|
|
1681
|
+
|
|
1682
|
+
|
|
1683
|
+
|
|
1684
|
+
|
|
1685
|
+
|
|
1686
|
+
|
|
1687
|
+
|
|
1688
|
+
|
|
1689
|
+
|
|
1690
|
+
|
|
1691
|
+
|
|
1692
|
+
|
|
1693
|
+
|
|
1694
|
+
|
|
1695
|
+
|
|
1696
|
+
|
|
1697
|
+
|
|
1698
|
+
|
|
1699
|
+
|
|
1700
|
+
* @example
|
|
1701
|
+
* // Greatest key ≤ target
|
|
1702
|
+
* const ms = new TreeMultiSet<number>();
|
|
1703
|
+
* ms.add(10);
|
|
1704
|
+
* ms.add(20);
|
|
1705
|
+
* ms.add(30);
|
|
1706
|
+
* console.log(ms.floor(25)); // 20;
|
|
1707
|
+
*/
|
|
1708
|
+
floor(key: K): K | undefined;
|
|
1709
|
+
/**
|
|
1710
|
+
* Returns the smallest key > given key, or undefined.
|
|
1711
|
+
* @remarks Time O(log n), Space O(1)
|
|
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
|
+
|
|
1755
|
+
|
|
1756
|
+
|
|
1757
|
+
|
|
1758
|
+
|
|
1759
|
+
|
|
1760
|
+
|
|
1761
|
+
|
|
1762
|
+
|
|
1763
|
+
|
|
1764
|
+
|
|
1765
|
+
|
|
1766
|
+
|
|
1767
|
+
|
|
1768
|
+
|
|
1769
|
+
|
|
1770
|
+
|
|
1771
|
+
|
|
1772
|
+
|
|
1773
|
+
|
|
1774
|
+
|
|
1775
|
+
|
|
1776
|
+
|
|
1777
|
+
|
|
1778
|
+
|
|
1779
|
+
|
|
1780
|
+
|
|
1781
|
+
|
|
1782
|
+
|
|
1783
|
+
|
|
1784
|
+
|
|
1785
|
+
|
|
1786
|
+
|
|
1787
|
+
|
|
1788
|
+
|
|
1789
|
+
|
|
1790
|
+
|
|
1791
|
+
|
|
1792
|
+
|
|
1793
|
+
|
|
1794
|
+
|
|
1795
|
+
|
|
1796
|
+
|
|
1797
|
+
|
|
1798
|
+
|
|
1799
|
+
|
|
1800
|
+
|
|
1801
|
+
|
|
1802
|
+
|
|
1803
|
+
|
|
1804
|
+
|
|
1805
|
+
|
|
1806
|
+
|
|
1807
|
+
|
|
1808
|
+
|
|
1809
|
+
|
|
1810
|
+
|
|
1811
|
+
|
|
1812
|
+
|
|
1813
|
+
|
|
1814
|
+
|
|
1815
|
+
|
|
1816
|
+
|
|
1817
|
+
|
|
1818
|
+
|
|
1819
|
+
|
|
1820
|
+
|
|
1821
|
+
|
|
1822
|
+
* @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
|
+
|
|
1835
|
+
|
|
1836
|
+
|
|
1837
|
+
|
|
1838
|
+
|
|
1839
|
+
|
|
1840
|
+
|
|
1841
|
+
|
|
1842
|
+
|
|
1843
|
+
|
|
1844
|
+
|
|
1845
|
+
|
|
1846
|
+
|
|
1847
|
+
|
|
1848
|
+
|
|
1849
|
+
|
|
1850
|
+
|
|
1851
|
+
|
|
1852
|
+
|
|
1853
|
+
|
|
1854
|
+
|
|
1855
|
+
|
|
1856
|
+
|
|
1857
|
+
|
|
1858
|
+
|
|
1859
|
+
|
|
1860
|
+
|
|
1861
|
+
|
|
1862
|
+
|
|
1863
|
+
|
|
1864
|
+
|
|
1865
|
+
|
|
1866
|
+
|
|
1867
|
+
|
|
1868
|
+
|
|
1869
|
+
|
|
1870
|
+
|
|
1871
|
+
|
|
1872
|
+
|
|
1873
|
+
|
|
1874
|
+
|
|
1875
|
+
|
|
1876
|
+
|
|
1877
|
+
|
|
1878
|
+
|
|
1879
|
+
|
|
1880
|
+
|
|
1881
|
+
|
|
1882
|
+
|
|
1883
|
+
|
|
1884
|
+
|
|
1885
|
+
|
|
1886
|
+
|
|
1887
|
+
|
|
1888
|
+
|
|
1889
|
+
|
|
1890
|
+
|
|
1891
|
+
|
|
1892
|
+
|
|
1893
|
+
|
|
1894
|
+
|
|
1895
|
+
|
|
1896
|
+
|
|
1897
|
+
|
|
1898
|
+
|
|
1899
|
+
|
|
1900
|
+
|
|
1901
|
+
|
|
1902
|
+
|
|
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
|
+
* @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
|
+
|
|
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
|
+
|
|
2006
|
+
|
|
2007
|
+
|
|
2008
|
+
|
|
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
|
+
* @example
|
|
2094
|
+
* // Iterate
|
|
2095
|
+
* const ms = new TreeMultiSet<number>();
|
|
2096
|
+
* ms.add(1, 2);
|
|
2097
|
+
* ms.add(2);
|
|
2098
|
+
* const pairs: [number, number][] = [];
|
|
2099
|
+
* ms.forEach((k, c) => pairs.push([k, c]));
|
|
2100
|
+
* console.log(pairs); // [[1, 2], [2, 1]];
|
|
2101
|
+
*/
|
|
2102
|
+
forEach(callback: (key: K, count: number) => void): void;
|
|
2103
|
+
/**
|
|
2104
|
+
* Creates a new TreeMultiSet with entries that match the predicate.
|
|
2105
|
+
* @remarks Time O(n log n), Space O(n)
|
|
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
|
+
|
|
2161
|
+
|
|
2162
|
+
|
|
2163
|
+
|
|
2164
|
+
|
|
2165
|
+
|
|
2166
|
+
|
|
2167
|
+
|
|
2168
|
+
|
|
2169
|
+
|
|
2170
|
+
|
|
2171
|
+
|
|
2172
|
+
|
|
2173
|
+
|
|
2174
|
+
|
|
2175
|
+
|
|
2176
|
+
|
|
2177
|
+
|
|
2178
|
+
|
|
2179
|
+
|
|
2180
|
+
|
|
2181
|
+
|
|
2182
|
+
|
|
2183
|
+
|
|
2184
|
+
|
|
2185
|
+
|
|
2186
|
+
|
|
2187
|
+
|
|
2188
|
+
|
|
2189
|
+
|
|
2190
|
+
|
|
2191
|
+
|
|
2192
|
+
|
|
2193
|
+
|
|
2194
|
+
|
|
2195
|
+
|
|
2196
|
+
|
|
2197
|
+
|
|
2198
|
+
|
|
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
|
+
* @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
|
+
|
|
2268
|
+
|
|
2269
|
+
|
|
2270
|
+
|
|
2271
|
+
|
|
2272
|
+
|
|
2273
|
+
|
|
2274
|
+
|
|
2275
|
+
|
|
2276
|
+
|
|
2277
|
+
|
|
2278
|
+
|
|
2279
|
+
|
|
2280
|
+
|
|
2281
|
+
|
|
2282
|
+
|
|
2283
|
+
|
|
2284
|
+
|
|
2285
|
+
|
|
2286
|
+
|
|
2287
|
+
|
|
2288
|
+
|
|
2289
|
+
|
|
2290
|
+
|
|
2291
|
+
|
|
2292
|
+
|
|
2293
|
+
|
|
2294
|
+
|
|
2295
|
+
|
|
2296
|
+
|
|
2297
|
+
|
|
2298
|
+
|
|
2299
|
+
|
|
2300
|
+
|
|
2301
|
+
|
|
2302
|
+
|
|
2303
|
+
|
|
2304
|
+
|
|
2305
|
+
|
|
2306
|
+
|
|
2307
|
+
|
|
2308
|
+
|
|
2309
|
+
|
|
2310
|
+
|
|
2311
|
+
|
|
2312
|
+
|
|
2313
|
+
|
|
2314
|
+
|
|
2315
|
+
|
|
2316
|
+
|
|
2317
|
+
|
|
2318
|
+
|
|
2319
|
+
|
|
2320
|
+
|
|
2321
|
+
|
|
2322
|
+
|
|
2323
|
+
|
|
2324
|
+
|
|
2325
|
+
|
|
2326
|
+
|
|
2327
|
+
|
|
2328
|
+
|
|
2329
|
+
|
|
2330
|
+
|
|
2331
|
+
|
|
2332
|
+
|
|
2333
|
+
|
|
2334
|
+
|
|
2335
|
+
|
|
2336
|
+
|
|
2337
|
+
|
|
2338
|
+
|
|
2339
|
+
|
|
2340
|
+
|
|
2341
|
+
|
|
2342
|
+
|
|
2343
|
+
|
|
2344
|
+
|
|
2345
|
+
|
|
2346
|
+
|
|
2347
|
+
|
|
2348
|
+
|
|
2349
|
+
|
|
2350
|
+
|
|
2351
|
+
|
|
2352
|
+
|
|
2353
|
+
|
|
2354
|
+
|
|
2355
|
+
|
|
2356
|
+
|
|
2357
|
+
|
|
2358
|
+
|
|
2359
|
+
|
|
2360
|
+
|
|
2361
|
+
|
|
2362
|
+
|
|
2363
|
+
|
|
2364
|
+
|
|
2365
|
+
|
|
2366
|
+
|
|
2367
|
+
|
|
2368
|
+
|
|
2369
|
+
|
|
2370
|
+
|
|
2371
|
+
|
|
2372
|
+
|
|
2373
|
+
|
|
2374
|
+
|
|
2375
|
+
|
|
2376
|
+
|
|
2377
|
+
|
|
2378
|
+
|
|
2379
|
+
|
|
2380
|
+
|
|
2381
|
+
|
|
2382
|
+
|
|
2383
|
+
|
|
2384
|
+
|
|
2385
|
+
|
|
2386
|
+
|
|
2387
|
+
|
|
2388
|
+
|
|
2389
|
+
|
|
2390
|
+
|
|
2391
|
+
|
|
2392
|
+
|
|
2393
|
+
|
|
2394
|
+
|
|
2395
|
+
|
|
2396
|
+
|
|
2397
|
+
* @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
|
+
|
|
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
|
+
|
|
2475
|
+
|
|
2476
|
+
|
|
2477
|
+
|
|
2478
|
+
|
|
2479
|
+
|
|
2480
|
+
|
|
2481
|
+
|
|
2482
|
+
|
|
2483
|
+
|
|
2484
|
+
|
|
2485
|
+
|
|
2486
|
+
|
|
2487
|
+
|
|
2488
|
+
|
|
2489
|
+
|
|
2490
|
+
|
|
2491
|
+
|
|
2492
|
+
|
|
2493
|
+
|
|
2494
|
+
|
|
2495
|
+
|
|
2496
|
+
|
|
2497
|
+
|
|
2498
|
+
|
|
2499
|
+
|
|
2500
|
+
|
|
423
2501
|
|
|
424
2502
|
|
|
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
2503
|
|
|
443
2504
|
|
|
444
2505
|
|
|
@@ -477,74 +2538,28 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
477
2538
|
|
|
478
2539
|
|
|
479
2540
|
|
|
480
|
-
* @example
|
|
481
|
-
* // Remove all
|
|
482
|
-
* const ms = new TreeMultiSet<number>();
|
|
483
|
-
* ms.add(1);
|
|
484
|
-
* ms.clear();
|
|
485
|
-
* console.log(ms.isEmpty()); // true;
|
|
486
|
-
*/
|
|
487
|
-
clear(): void;
|
|
488
|
-
/**
|
|
489
|
-
* Returns the smallest key, or undefined if empty.
|
|
490
|
-
* @remarks Time O(log n), Space O(1)
|
|
491
|
-
|
|
492
2541
|
|
|
493
2542
|
|
|
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
2543
|
|
|
507
2544
|
|
|
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
2545
|
|
|
521
2546
|
|
|
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
2547
|
|
|
536
2548
|
|
|
537
2549
|
* @example
|
|
538
|
-
* //
|
|
2550
|
+
* // Transform
|
|
539
2551
|
* const ms = new TreeMultiSet<number>();
|
|
540
|
-
* ms.add(1);
|
|
541
|
-
* ms.add(3);
|
|
542
|
-
*
|
|
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];
|
|
543
2556
|
*/
|
|
544
|
-
|
|
2557
|
+
map<K2>(mapper: (key: K, count: number) => [K2, number], options?: {
|
|
2558
|
+
comparator?: Comparator<K2>;
|
|
2559
|
+
}): TreeMultiSet<K2>;
|
|
545
2560
|
/**
|
|
546
|
-
*
|
|
547
|
-
* @remarks Time O(log n), Space O(
|
|
2561
|
+
* Creates an independent copy of this multiset.
|
|
2562
|
+
* @remarks Time O(n log n), Space O(n)
|
|
548
2563
|
|
|
549
2564
|
|
|
550
2565
|
|
|
@@ -575,19 +2590,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
575
2590
|
|
|
576
2591
|
|
|
577
2592
|
|
|
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
2593
|
|
|
592
2594
|
|
|
593
2595
|
|
|
@@ -617,19 +2619,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
617
2619
|
|
|
618
2620
|
|
|
619
2621
|
|
|
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
2622
|
|
|
634
2623
|
|
|
635
2624
|
|
|
@@ -659,18 +2648,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
659
2648
|
|
|
660
2649
|
|
|
661
2650
|
|
|
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
|
-
|
|
674
2651
|
|
|
675
2652
|
|
|
676
2653
|
|
|
@@ -700,18 +2677,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
700
2677
|
|
|
701
2678
|
|
|
702
2679
|
|
|
703
|
-
* @example
|
|
704
|
-
* // Greatest key < target
|
|
705
|
-
* const ms = new TreeMultiSet<number>();
|
|
706
|
-
* ms.add(10);
|
|
707
|
-
* ms.add(20);
|
|
708
|
-
* console.log(ms.lower(20)); // 10;
|
|
709
|
-
*/
|
|
710
|
-
lower(key: K): K | undefined;
|
|
711
|
-
/**
|
|
712
|
-
* Iterates over distinct keys with their counts.
|
|
713
|
-
* @remarks Time O(n), Space O(1)
|
|
714
|
-
|
|
715
2680
|
|
|
716
2681
|
|
|
717
2682
|
|
|
@@ -734,6 +2699,23 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
734
2699
|
|
|
735
2700
|
|
|
736
2701
|
|
|
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
|
+
|
|
2716
|
+
|
|
2717
|
+
|
|
2718
|
+
|
|
737
2719
|
|
|
738
2720
|
|
|
739
2721
|
|
|
@@ -750,20 +2732,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
750
2732
|
|
|
751
2733
|
|
|
752
2734
|
|
|
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
2735
|
|
|
768
2736
|
|
|
769
2737
|
|
|
@@ -802,20 +2770,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
802
2770
|
|
|
803
2771
|
|
|
804
2772
|
|
|
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
2773
|
|
|
820
2774
|
|
|
821
2775
|
|
|
@@ -854,20 +2808,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
854
2808
|
|
|
855
2809
|
|
|
856
2810
|
|
|
857
|
-
* @example
|
|
858
|
-
* // Aggregate
|
|
859
|
-
* 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;
|
|
864
|
-
*/
|
|
865
|
-
reduce<U>(callback: (accumulator: U, key: K, count: number) => U, initialValue: U): U;
|
|
866
|
-
/**
|
|
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)
|
|
870
|
-
|
|
871
2811
|
|
|
872
2812
|
|
|
873
2813
|
|
|
@@ -881,6 +2821,28 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
881
2821
|
|
|
882
2822
|
|
|
883
2823
|
|
|
2824
|
+
* @example
|
|
2825
|
+
* // Find in range
|
|
2826
|
+
* const ms = new TreeMultiSet<number>();
|
|
2827
|
+
* ms.add(10);
|
|
2828
|
+
* ms.add(20);
|
|
2829
|
+
* ms.add(30);
|
|
2830
|
+
* const result = ms.rangeSearch([15, 25]);
|
|
2831
|
+
* console.log(result.length); // 1;
|
|
2832
|
+
*/
|
|
2833
|
+
rangeSearch<C extends (key: K) => any>(range: [K, K], callback?: C): (C extends undefined ? K : ReturnType<C>)[];
|
|
2834
|
+
/**
|
|
2835
|
+
* Prints the internal tree structure (for debugging).
|
|
2836
|
+
* @remarks Time O(n), Space O(n)
|
|
2837
|
+
|
|
2838
|
+
|
|
2839
|
+
|
|
2840
|
+
|
|
2841
|
+
|
|
2842
|
+
|
|
2843
|
+
|
|
2844
|
+
|
|
2845
|
+
|
|
884
2846
|
|
|
885
2847
|
|
|
886
2848
|
|
|
@@ -906,21 +2868,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
906
2868
|
|
|
907
2869
|
|
|
908
2870
|
|
|
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
2871
|
|
|
925
2872
|
|
|
926
2873
|
|
|
@@ -959,19 +2906,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
959
2906
|
|
|
960
2907
|
|
|
961
2908
|
|
|
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
2909
|
|
|
976
2910
|
|
|
977
2911
|
|
|
@@ -1001,20 +2935,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
1001
2935
|
|
|
1002
2936
|
|
|
1003
2937
|
|
|
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
2938
|
|
|
1019
2939
|
|
|
1020
2940
|
|