data-structure-typed 2.5.0 → 2.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.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 +5 -1
- package/README.md +124 -29
- package/dist/cjs/binary-tree.cjs +26282 -0
- package/dist/cjs/graph.cjs +5422 -0
- package/dist/cjs/hash.cjs +1310 -0
- package/dist/cjs/heap.cjs +1602 -0
- package/dist/cjs/index.cjs +31257 -14673
- package/dist/cjs/linked-list.cjs +4576 -0
- package/dist/cjs/matrix.cjs +1080 -0
- package/dist/cjs/priority-queue.cjs +1376 -0
- package/dist/cjs/queue.cjs +4264 -0
- package/dist/cjs/stack.cjs +907 -0
- package/dist/cjs/trie.cjs +1223 -0
- package/dist/cjs-legacy/binary-tree.cjs +26319 -0
- package/dist/cjs-legacy/graph.cjs +5420 -0
- package/dist/cjs-legacy/hash.cjs +1310 -0
- package/dist/cjs-legacy/heap.cjs +1599 -0
- package/dist/cjs-legacy/index.cjs +31268 -14679
- package/dist/cjs-legacy/linked-list.cjs +4582 -0
- package/dist/cjs-legacy/matrix.cjs +1083 -0
- package/dist/cjs-legacy/priority-queue.cjs +1374 -0
- package/dist/cjs-legacy/queue.cjs +4262 -0
- package/dist/cjs-legacy/stack.cjs +907 -0
- package/dist/cjs-legacy/trie.cjs +1222 -0
- package/dist/esm/binary-tree.mjs +26267 -0
- package/dist/esm/graph.mjs +5409 -0
- package/dist/esm/hash.mjs +1307 -0
- package/dist/esm/heap.mjs +1596 -0
- package/dist/esm/index.mjs +31254 -14674
- package/dist/esm/linked-list.mjs +4569 -0
- package/dist/esm/matrix.mjs +1076 -0
- package/dist/esm/priority-queue.mjs +1372 -0
- package/dist/esm/queue.mjs +4260 -0
- package/dist/esm/stack.mjs +905 -0
- package/dist/esm/trie.mjs +1220 -0
- package/dist/esm-legacy/binary-tree.mjs +26304 -0
- package/dist/esm-legacy/graph.mjs +5407 -0
- package/dist/esm-legacy/hash.mjs +1307 -0
- package/dist/esm-legacy/heap.mjs +1593 -0
- package/dist/esm-legacy/index.mjs +31265 -14680
- package/dist/esm-legacy/linked-list.mjs +4575 -0
- package/dist/esm-legacy/matrix.mjs +1079 -0
- package/dist/esm-legacy/priority-queue.mjs +1370 -0
- package/dist/esm-legacy/queue.mjs +4258 -0
- package/dist/esm-legacy/stack.mjs +905 -0
- package/dist/esm-legacy/trie.mjs +1219 -0
- package/dist/types/common/error.d.ts +9 -0
- package/dist/types/common/index.d.ts +1 -1
- package/dist/types/data-structures/base/index.d.ts +1 -0
- package/dist/types/data-structures/base/iterable-entry-base.d.ts +8 -8
- package/dist/types/data-structures/base/linear-base.d.ts +3 -3
- package/dist/types/data-structures/binary-tree/avl-tree.d.ts +288 -0
- package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +336 -0
- package/dist/types/data-structures/binary-tree/binary-tree.d.ts +618 -18
- package/dist/types/data-structures/binary-tree/bst.d.ts +676 -1
- package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +456 -0
- package/dist/types/data-structures/binary-tree/segment-tree.d.ts +144 -1
- package/dist/types/data-structures/binary-tree/tree-map.d.ts +3307 -399
- package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +3285 -360
- package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +2674 -325
- package/dist/types/data-structures/binary-tree/tree-set.d.ts +3072 -287
- package/dist/types/data-structures/graph/abstract-graph.d.ts +4 -4
- package/dist/types/data-structures/graph/directed-graph.d.ts +240 -0
- package/dist/types/data-structures/graph/undirected-graph.d.ts +216 -0
- package/dist/types/data-structures/hash/hash-map.d.ts +274 -10
- package/dist/types/data-structures/heap/heap.d.ts +336 -0
- package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +411 -3
- package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +363 -3
- package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +434 -2
- package/dist/types/data-structures/matrix/matrix.d.ts +192 -0
- package/dist/types/data-structures/queue/deque.d.ts +364 -4
- package/dist/types/data-structures/queue/queue.d.ts +288 -0
- package/dist/types/data-structures/stack/stack.d.ts +240 -0
- package/dist/types/data-structures/trie/trie.d.ts +292 -4
- package/dist/types/interfaces/graph.d.ts +1 -1
- package/dist/types/types/common.d.ts +2 -2
- package/dist/types/types/data-structures/binary-tree/bst.d.ts +1 -0
- package/dist/types/types/data-structures/binary-tree/tree-map.d.ts +5 -0
- package/dist/types/types/data-structures/binary-tree/tree-multi-set.d.ts +4 -0
- package/dist/types/types/data-structures/binary-tree/tree-set.d.ts +4 -0
- package/dist/types/types/data-structures/heap/heap.d.ts +1 -0
- package/dist/types/types/data-structures/priority-queue/priority-queue.d.ts +1 -0
- package/dist/types/types/utils/validate-type.d.ts +4 -4
- package/dist/umd/data-structure-typed.js +31196 -14608
- package/dist/umd/data-structure-typed.min.js +11 -5
- 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 +6644 -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 +6293 -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 +6888 -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 +1389 -0
- package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +1591 -0
- package/docs-site-docusaurus/docs/api/classes/TreeSet.md +1246 -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 +615 -0
- package/docs-site-docusaurus/docs/guide/concepts.md +451 -0
- package/docs-site-docusaurus/docs/guide/faq.md +180 -0
- package/docs-site-docusaurus/docs/guide/guides.md +597 -0
- package/docs-site-docusaurus/docs/guide/installation.md +62 -0
- package/docs-site-docusaurus/docs/guide/integrations.md +825 -0
- package/docs-site-docusaurus/docs/guide/overview.md +645 -0
- package/docs-site-docusaurus/docs/guide/performance.md +835 -0
- package/docs-site-docusaurus/docs/guide/quick-start.md +104 -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 +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 +120 -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/llms.txt +37 -0
- package/docs-site-docusaurus/static/robots.txt +4 -0
- package/docs-site-docusaurus/typedoc.json +23 -0
- package/llms.txt +37 -0
- package/package.json +159 -55
- package/src/common/error.ts +19 -1
- package/src/common/index.ts +1 -1
- package/src/data-structures/base/index.ts +1 -0
- package/src/data-structures/base/iterable-element-base.ts +3 -2
- package/src/data-structures/base/iterable-entry-base.ts +8 -8
- package/src/data-structures/base/linear-base.ts +3 -3
- package/src/data-structures/binary-tree/avl-tree.ts +287 -0
- package/src/data-structures/binary-tree/binary-indexed-tree.ts +327 -5
- package/src/data-structures/binary-tree/binary-tree.ts +581 -6
- package/src/data-structures/binary-tree/bst.ts +922 -7
- package/src/data-structures/binary-tree/red-black-tree.ts +453 -0
- package/src/data-structures/binary-tree/segment-tree.ts +139 -2
- package/src/data-structures/binary-tree/tree-map.ts +3300 -495
- package/src/data-structures/binary-tree/tree-multi-map.ts +3384 -563
- package/src/data-structures/binary-tree/tree-multi-set.ts +2757 -493
- package/src/data-structures/binary-tree/tree-set.ts +3122 -440
- package/src/data-structures/graph/abstract-graph.ts +6 -6
- package/src/data-structures/graph/directed-graph.ts +230 -0
- package/src/data-structures/graph/undirected-graph.ts +207 -0
- package/src/data-structures/hash/hash-map.ts +270 -19
- package/src/data-structures/heap/heap.ts +326 -4
- package/src/data-structures/heap/max-heap.ts +2 -2
- package/src/data-structures/linked-list/doubly-linked-list.ts +394 -3
- package/src/data-structures/linked-list/singly-linked-list.ts +348 -3
- package/src/data-structures/linked-list/skip-linked-list.ts +421 -7
- package/src/data-structures/matrix/matrix.ts +194 -10
- package/src/data-structures/priority-queue/max-priority-queue.ts +2 -2
- package/src/data-structures/queue/deque.ts +350 -5
- package/src/data-structures/queue/queue.ts +276 -0
- package/src/data-structures/stack/stack.ts +230 -0
- package/src/data-structures/trie/trie.ts +283 -7
- package/src/interfaces/graph.ts +1 -1
- package/src/types/common.ts +2 -2
- package/src/types/data-structures/binary-tree/bst.ts +1 -0
- package/src/types/data-structures/binary-tree/tree-map.ts +6 -0
- package/src/types/data-structures/binary-tree/tree-multi-set.ts +5 -0
- package/src/types/data-structures/binary-tree/tree-set.ts +5 -0
- package/src/types/data-structures/heap/heap.ts +1 -0
- package/src/types/data-structures/priority-queue/priority-queue.ts +1 -0
- package/src/types/utils/validate-type.ts +4 -4
- 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
|
@@ -45,6 +45,30 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
45
45
|
* @remarks Time O(1), Space O(1)
|
|
46
46
|
|
|
47
47
|
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
48
72
|
* @example
|
|
49
73
|
* // Unique key count
|
|
50
74
|
* const ms = new TreeMultiSet<number>();
|
|
@@ -73,6 +97,126 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
73
97
|
|
|
74
98
|
|
|
75
99
|
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
|
|
76
220
|
|
|
77
221
|
|
|
78
222
|
|
|
@@ -143,30 +287,8 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
143
287
|
|
|
144
288
|
|
|
145
289
|
|
|
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
290
|
|
|
158
291
|
|
|
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
292
|
|
|
171
293
|
|
|
172
294
|
|
|
@@ -199,33 +321,8 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
199
321
|
|
|
200
322
|
|
|
201
323
|
|
|
202
|
-
* @example
|
|
203
|
-
* // Add elements
|
|
204
|
-
* const ms = new TreeMultiSet<number>();
|
|
205
|
-
* ms.add(1);
|
|
206
|
-
* ms.add(1);
|
|
207
|
-
* ms.add(2);
|
|
208
|
-
* console.log(ms.count(1)); // 2;
|
|
209
|
-
* console.log(ms.size); // 3;
|
|
210
|
-
*/
|
|
211
|
-
add(key: K, n?: number): boolean;
|
|
212
|
-
/**
|
|
213
|
-
* Set count for `key` to exactly `n`.
|
|
214
|
-
* @returns True if changed.
|
|
215
|
-
* @remarks Time O(log n), Space O(1)
|
|
216
324
|
|
|
217
325
|
|
|
218
|
-
* @example
|
|
219
|
-
* // Set occurrence count
|
|
220
|
-
* const ms = new TreeMultiSet<number>();
|
|
221
|
-
* ms.setCount(1, 3);
|
|
222
|
-
* console.log(ms.count(1)); // 3;
|
|
223
|
-
*/
|
|
224
|
-
setCount(key: K, n: number): boolean;
|
|
225
|
-
/**
|
|
226
|
-
* Delete `n` occurrences of `key` (default 1).
|
|
227
|
-
* @returns True if any occurrence was removed.
|
|
228
|
-
* @remarks Time O(log n), Space O(1)
|
|
229
326
|
|
|
230
327
|
|
|
231
328
|
|
|
@@ -267,44 +364,11 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
267
364
|
|
|
268
365
|
|
|
269
366
|
|
|
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
367
|
|
|
283
368
|
|
|
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
369
|
|
|
296
370
|
|
|
297
|
-
|
|
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)
|
|
371
|
+
|
|
308
372
|
|
|
309
373
|
|
|
310
374
|
|
|
@@ -344,20 +408,20 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
344
408
|
|
|
345
409
|
|
|
346
410
|
* @example
|
|
347
|
-
* //
|
|
411
|
+
* // Check existence
|
|
348
412
|
* const ms = new TreeMultiSet<number>();
|
|
349
|
-
* ms.add(1
|
|
350
|
-
* console.log(
|
|
351
|
-
|
|
352
|
-
entries(): IterableIterator<[K, number]>;
|
|
353
|
-
/**
|
|
354
|
-
* Expanded iteration (default). Each key is yielded `count(key)` times.
|
|
355
|
-
* @remarks Time O(size), Space O(1) where size is total occurrences
|
|
413
|
+
* ms.add(1);
|
|
414
|
+
* console.log(ms.has(1)); // true;
|
|
415
|
+
* console.log(ms.has(2)); // false;
|
|
356
416
|
*/
|
|
357
|
-
|
|
417
|
+
has(key: K): boolean;
|
|
358
418
|
/**
|
|
359
|
-
* Returns
|
|
360
|
-
* @remarks Time O(
|
|
419
|
+
* Returns the count of occurrences for the given key.
|
|
420
|
+
* @remarks Time O(log n), Space O(1)
|
|
421
|
+
|
|
422
|
+
|
|
423
|
+
|
|
424
|
+
|
|
361
425
|
|
|
362
426
|
|
|
363
427
|
|
|
@@ -380,6 +444,2454 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
380
444
|
|
|
381
445
|
|
|
382
446
|
|
|
447
|
+
* @example
|
|
448
|
+
* // Get occurrence count
|
|
449
|
+
* const ms = new TreeMultiSet<number>();
|
|
450
|
+
* ms.add(1, 5);
|
|
451
|
+
* console.log(ms.count(1)); // 5;
|
|
452
|
+
*/
|
|
453
|
+
count(key: K): number;
|
|
454
|
+
/**
|
|
455
|
+
* Add `n` occurrences of `key`.
|
|
456
|
+
* @returns True if the multiset changed.
|
|
457
|
+
* @remarks Time O(log n), Space O(1)
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
|
|
461
|
+
|
|
462
|
+
|
|
463
|
+
|
|
464
|
+
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
|
|
477
|
+
|
|
478
|
+
|
|
479
|
+
|
|
480
|
+
|
|
481
|
+
|
|
482
|
+
|
|
483
|
+
|
|
484
|
+
|
|
485
|
+
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
|
|
489
|
+
|
|
490
|
+
|
|
491
|
+
|
|
492
|
+
|
|
493
|
+
|
|
494
|
+
|
|
495
|
+
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
|
|
501
|
+
|
|
502
|
+
|
|
503
|
+
|
|
504
|
+
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
|
|
517
|
+
|
|
518
|
+
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
|
|
522
|
+
|
|
523
|
+
|
|
524
|
+
|
|
525
|
+
|
|
526
|
+
|
|
527
|
+
|
|
528
|
+
|
|
529
|
+
|
|
530
|
+
|
|
531
|
+
|
|
532
|
+
|
|
533
|
+
|
|
534
|
+
|
|
535
|
+
|
|
536
|
+
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
|
|
540
|
+
|
|
541
|
+
|
|
542
|
+
|
|
543
|
+
|
|
544
|
+
|
|
545
|
+
|
|
546
|
+
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
|
|
550
|
+
|
|
551
|
+
|
|
552
|
+
|
|
553
|
+
|
|
554
|
+
|
|
555
|
+
|
|
556
|
+
|
|
557
|
+
|
|
558
|
+
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
|
|
565
|
+
|
|
566
|
+
|
|
567
|
+
|
|
568
|
+
|
|
569
|
+
|
|
570
|
+
|
|
571
|
+
|
|
572
|
+
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
|
|
576
|
+
|
|
577
|
+
|
|
578
|
+
|
|
579
|
+
|
|
580
|
+
|
|
581
|
+
|
|
582
|
+
|
|
583
|
+
|
|
584
|
+
|
|
585
|
+
|
|
586
|
+
|
|
587
|
+
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
|
|
591
|
+
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
|
|
595
|
+
|
|
596
|
+
|
|
597
|
+
|
|
598
|
+
|
|
599
|
+
|
|
600
|
+
|
|
601
|
+
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
|
|
605
|
+
|
|
606
|
+
|
|
607
|
+
|
|
608
|
+
|
|
609
|
+
|
|
610
|
+
* @example
|
|
611
|
+
* // Add elements
|
|
612
|
+
* const ms = new TreeMultiSet<number>();
|
|
613
|
+
* ms.add(1);
|
|
614
|
+
* ms.add(1);
|
|
615
|
+
* ms.add(2);
|
|
616
|
+
* console.log(ms.count(1)); // 2;
|
|
617
|
+
* console.log(ms.size); // 3;
|
|
618
|
+
*/
|
|
619
|
+
add(key: K, n?: number): boolean;
|
|
620
|
+
/**
|
|
621
|
+
* Set count for `key` to exactly `n`.
|
|
622
|
+
* @returns True if changed.
|
|
623
|
+
* @remarks Time O(log n), Space O(1)
|
|
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
|
+
* @example
|
|
651
|
+
* // Set occurrence count
|
|
652
|
+
* const ms = new TreeMultiSet<number>();
|
|
653
|
+
* ms.setCount(1, 3);
|
|
654
|
+
* console.log(ms.count(1)); // 3;
|
|
655
|
+
*/
|
|
656
|
+
setCount(key: K, n: number): boolean;
|
|
657
|
+
/**
|
|
658
|
+
* Delete `n` occurrences of `key` (default 1).
|
|
659
|
+
* @returns True if any occurrence was removed.
|
|
660
|
+
* @remarks Time O(log n), Space O(1)
|
|
661
|
+
|
|
662
|
+
|
|
663
|
+
|
|
664
|
+
|
|
665
|
+
|
|
666
|
+
|
|
667
|
+
|
|
668
|
+
|
|
669
|
+
|
|
670
|
+
|
|
671
|
+
|
|
672
|
+
|
|
673
|
+
|
|
674
|
+
|
|
675
|
+
|
|
676
|
+
|
|
677
|
+
|
|
678
|
+
|
|
679
|
+
|
|
680
|
+
|
|
681
|
+
|
|
682
|
+
|
|
683
|
+
|
|
684
|
+
|
|
685
|
+
|
|
686
|
+
|
|
687
|
+
|
|
688
|
+
|
|
689
|
+
|
|
690
|
+
|
|
691
|
+
|
|
692
|
+
|
|
693
|
+
|
|
694
|
+
|
|
695
|
+
|
|
696
|
+
|
|
697
|
+
|
|
698
|
+
|
|
699
|
+
|
|
700
|
+
|
|
701
|
+
|
|
702
|
+
|
|
703
|
+
|
|
704
|
+
|
|
705
|
+
|
|
706
|
+
|
|
707
|
+
|
|
708
|
+
|
|
709
|
+
|
|
710
|
+
|
|
711
|
+
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
|
|
715
|
+
|
|
716
|
+
|
|
717
|
+
|
|
718
|
+
|
|
719
|
+
|
|
720
|
+
|
|
721
|
+
|
|
722
|
+
|
|
723
|
+
|
|
724
|
+
|
|
725
|
+
|
|
726
|
+
|
|
727
|
+
|
|
728
|
+
|
|
729
|
+
|
|
730
|
+
|
|
731
|
+
|
|
732
|
+
|
|
733
|
+
|
|
734
|
+
|
|
735
|
+
|
|
736
|
+
|
|
737
|
+
|
|
738
|
+
|
|
739
|
+
|
|
740
|
+
|
|
741
|
+
|
|
742
|
+
|
|
743
|
+
|
|
744
|
+
|
|
745
|
+
|
|
746
|
+
|
|
747
|
+
|
|
748
|
+
|
|
749
|
+
|
|
750
|
+
|
|
751
|
+
|
|
752
|
+
|
|
753
|
+
|
|
754
|
+
|
|
755
|
+
|
|
756
|
+
|
|
757
|
+
|
|
758
|
+
|
|
759
|
+
|
|
760
|
+
|
|
761
|
+
|
|
762
|
+
|
|
763
|
+
|
|
764
|
+
|
|
765
|
+
|
|
766
|
+
|
|
767
|
+
|
|
768
|
+
|
|
769
|
+
|
|
770
|
+
|
|
771
|
+
|
|
772
|
+
|
|
773
|
+
|
|
774
|
+
|
|
775
|
+
|
|
776
|
+
|
|
777
|
+
|
|
778
|
+
|
|
779
|
+
|
|
780
|
+
|
|
781
|
+
|
|
782
|
+
|
|
783
|
+
|
|
784
|
+
|
|
785
|
+
|
|
786
|
+
|
|
787
|
+
|
|
788
|
+
|
|
789
|
+
|
|
790
|
+
|
|
791
|
+
|
|
792
|
+
|
|
793
|
+
|
|
794
|
+
|
|
795
|
+
|
|
796
|
+
|
|
797
|
+
|
|
798
|
+
|
|
799
|
+
|
|
800
|
+
|
|
801
|
+
|
|
802
|
+
|
|
803
|
+
|
|
804
|
+
|
|
805
|
+
|
|
806
|
+
|
|
807
|
+
|
|
808
|
+
|
|
809
|
+
|
|
810
|
+
|
|
811
|
+
|
|
812
|
+
|
|
813
|
+
|
|
814
|
+
|
|
815
|
+
|
|
816
|
+
|
|
817
|
+
|
|
818
|
+
|
|
819
|
+
|
|
820
|
+
|
|
821
|
+
|
|
822
|
+
* @example
|
|
823
|
+
* // Remove one occurrence
|
|
824
|
+
* const ms = new TreeMultiSet<number>();
|
|
825
|
+
* ms.add(1, 3);
|
|
826
|
+
* ms.delete(1);
|
|
827
|
+
* console.log(ms.count(1)); // 2;
|
|
828
|
+
*/
|
|
829
|
+
delete(key: K, n?: number): boolean;
|
|
830
|
+
/**
|
|
831
|
+
* Delete all occurrences of the given key.
|
|
832
|
+
* @returns True if any occurrence was removed.
|
|
833
|
+
* @remarks Time O(log n), Space O(1)
|
|
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
|
+
* @example
|
|
861
|
+
* // Remove all occurrences
|
|
862
|
+
* const ms = new TreeMultiSet<number>();
|
|
863
|
+
* ms.add(1, 3);
|
|
864
|
+
* ms.deleteAll(1);
|
|
865
|
+
* console.log(ms.has(1)); // false;
|
|
866
|
+
*/
|
|
867
|
+
deleteAll(key: K): boolean;
|
|
868
|
+
/**
|
|
869
|
+
* Iterates over distinct keys (each key yielded once).
|
|
870
|
+
* @remarks Time O(n), Space O(1)
|
|
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
|
+
* @example
|
|
898
|
+
* // Iterate unique keys
|
|
899
|
+
* const ms = new TreeMultiSet<number>();
|
|
900
|
+
* ms.add(1, 2);
|
|
901
|
+
* ms.add(2);
|
|
902
|
+
* console.log([...ms.keysDistinct()]); // [1, 2];
|
|
903
|
+
*/
|
|
904
|
+
keysDistinct(): IterableIterator<K>;
|
|
905
|
+
/**
|
|
906
|
+
* Iterates over entries as [key, count] pairs.
|
|
907
|
+
* @remarks Time O(n), Space O(1)
|
|
908
|
+
|
|
909
|
+
|
|
910
|
+
|
|
911
|
+
|
|
912
|
+
|
|
913
|
+
|
|
914
|
+
|
|
915
|
+
|
|
916
|
+
|
|
917
|
+
|
|
918
|
+
|
|
919
|
+
|
|
920
|
+
|
|
921
|
+
|
|
922
|
+
|
|
923
|
+
|
|
924
|
+
|
|
925
|
+
|
|
926
|
+
|
|
927
|
+
|
|
928
|
+
|
|
929
|
+
|
|
930
|
+
|
|
931
|
+
|
|
932
|
+
|
|
933
|
+
|
|
934
|
+
|
|
935
|
+
|
|
936
|
+
|
|
937
|
+
|
|
938
|
+
|
|
939
|
+
|
|
940
|
+
|
|
941
|
+
|
|
942
|
+
|
|
943
|
+
|
|
944
|
+
|
|
945
|
+
|
|
946
|
+
|
|
947
|
+
|
|
948
|
+
|
|
949
|
+
|
|
950
|
+
|
|
951
|
+
|
|
952
|
+
|
|
953
|
+
|
|
954
|
+
|
|
955
|
+
|
|
956
|
+
|
|
957
|
+
|
|
958
|
+
|
|
959
|
+
|
|
960
|
+
|
|
961
|
+
|
|
962
|
+
|
|
963
|
+
|
|
964
|
+
|
|
965
|
+
|
|
966
|
+
|
|
967
|
+
|
|
968
|
+
|
|
969
|
+
|
|
970
|
+
|
|
971
|
+
|
|
972
|
+
|
|
973
|
+
|
|
974
|
+
|
|
975
|
+
|
|
976
|
+
|
|
977
|
+
|
|
978
|
+
|
|
979
|
+
|
|
980
|
+
|
|
981
|
+
|
|
982
|
+
|
|
983
|
+
|
|
984
|
+
|
|
985
|
+
|
|
986
|
+
|
|
987
|
+
|
|
988
|
+
|
|
989
|
+
|
|
990
|
+
|
|
991
|
+
|
|
992
|
+
|
|
993
|
+
|
|
994
|
+
|
|
995
|
+
|
|
996
|
+
|
|
997
|
+
|
|
998
|
+
|
|
999
|
+
|
|
1000
|
+
|
|
1001
|
+
|
|
1002
|
+
|
|
1003
|
+
|
|
1004
|
+
|
|
1005
|
+
|
|
1006
|
+
|
|
1007
|
+
|
|
1008
|
+
|
|
1009
|
+
|
|
1010
|
+
|
|
1011
|
+
|
|
1012
|
+
|
|
1013
|
+
|
|
1014
|
+
|
|
1015
|
+
|
|
1016
|
+
|
|
1017
|
+
|
|
1018
|
+
|
|
1019
|
+
|
|
1020
|
+
|
|
1021
|
+
|
|
1022
|
+
|
|
1023
|
+
|
|
1024
|
+
|
|
1025
|
+
|
|
1026
|
+
|
|
1027
|
+
|
|
1028
|
+
|
|
1029
|
+
|
|
1030
|
+
|
|
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
|
+
* @example
|
|
1067
|
+
* // Iterate entries
|
|
1068
|
+
* const ms = new TreeMultiSet<number>();
|
|
1069
|
+
* ms.add(1, 2);
|
|
1070
|
+
* console.log([...ms.entries()].length); // > 0;
|
|
1071
|
+
*/
|
|
1072
|
+
entries(): IterableIterator<[K, number]>;
|
|
1073
|
+
/**
|
|
1074
|
+
* Expanded iteration (default). Each key is yielded `count(key)` times.
|
|
1075
|
+
* @remarks Time O(size), Space O(1) where size is total occurrences
|
|
1076
|
+
*/
|
|
1077
|
+
[Symbol.iterator](): Iterator<K>;
|
|
1078
|
+
/**
|
|
1079
|
+
* Returns an array with all elements (expanded).
|
|
1080
|
+
* @remarks Time O(size), Space O(size)
|
|
1081
|
+
|
|
1082
|
+
|
|
1083
|
+
|
|
1084
|
+
|
|
1085
|
+
|
|
1086
|
+
|
|
1087
|
+
|
|
1088
|
+
|
|
1089
|
+
|
|
1090
|
+
|
|
1091
|
+
|
|
1092
|
+
|
|
1093
|
+
|
|
1094
|
+
|
|
1095
|
+
|
|
1096
|
+
|
|
1097
|
+
|
|
1098
|
+
|
|
1099
|
+
|
|
1100
|
+
|
|
1101
|
+
|
|
1102
|
+
|
|
1103
|
+
|
|
1104
|
+
|
|
1105
|
+
|
|
1106
|
+
|
|
1107
|
+
|
|
1108
|
+
|
|
1109
|
+
|
|
1110
|
+
|
|
1111
|
+
|
|
1112
|
+
|
|
1113
|
+
|
|
1114
|
+
|
|
1115
|
+
|
|
1116
|
+
|
|
1117
|
+
|
|
1118
|
+
|
|
1119
|
+
|
|
1120
|
+
|
|
1121
|
+
|
|
1122
|
+
|
|
1123
|
+
|
|
1124
|
+
|
|
1125
|
+
|
|
1126
|
+
|
|
1127
|
+
|
|
1128
|
+
|
|
1129
|
+
|
|
1130
|
+
|
|
1131
|
+
|
|
1132
|
+
|
|
1133
|
+
|
|
1134
|
+
|
|
1135
|
+
|
|
1136
|
+
|
|
1137
|
+
|
|
1138
|
+
|
|
1139
|
+
|
|
1140
|
+
|
|
1141
|
+
|
|
1142
|
+
|
|
1143
|
+
|
|
1144
|
+
|
|
1145
|
+
|
|
1146
|
+
|
|
1147
|
+
|
|
1148
|
+
|
|
1149
|
+
|
|
1150
|
+
|
|
1151
|
+
|
|
1152
|
+
|
|
1153
|
+
|
|
1154
|
+
|
|
1155
|
+
|
|
1156
|
+
|
|
1157
|
+
|
|
1158
|
+
|
|
1159
|
+
|
|
1160
|
+
|
|
1161
|
+
|
|
1162
|
+
|
|
1163
|
+
|
|
1164
|
+
|
|
1165
|
+
|
|
1166
|
+
|
|
1167
|
+
|
|
1168
|
+
|
|
1169
|
+
|
|
1170
|
+
|
|
1171
|
+
|
|
1172
|
+
|
|
1173
|
+
|
|
1174
|
+
|
|
1175
|
+
|
|
1176
|
+
|
|
1177
|
+
|
|
1178
|
+
|
|
1179
|
+
|
|
1180
|
+
|
|
1181
|
+
|
|
1182
|
+
|
|
1183
|
+
|
|
1184
|
+
|
|
1185
|
+
|
|
1186
|
+
|
|
1187
|
+
|
|
1188
|
+
|
|
1189
|
+
|
|
1190
|
+
|
|
1191
|
+
|
|
1192
|
+
|
|
1193
|
+
|
|
1194
|
+
|
|
1195
|
+
|
|
1196
|
+
|
|
1197
|
+
|
|
1198
|
+
|
|
1199
|
+
|
|
1200
|
+
|
|
1201
|
+
|
|
1202
|
+
|
|
1203
|
+
|
|
1204
|
+
|
|
1205
|
+
|
|
1206
|
+
|
|
1207
|
+
|
|
1208
|
+
|
|
1209
|
+
|
|
1210
|
+
|
|
1211
|
+
|
|
1212
|
+
|
|
1213
|
+
|
|
1214
|
+
|
|
1215
|
+
|
|
1216
|
+
|
|
1217
|
+
|
|
1218
|
+
|
|
1219
|
+
|
|
1220
|
+
|
|
1221
|
+
|
|
1222
|
+
|
|
1223
|
+
|
|
1224
|
+
|
|
1225
|
+
|
|
1226
|
+
|
|
1227
|
+
|
|
1228
|
+
|
|
1229
|
+
|
|
1230
|
+
|
|
1231
|
+
|
|
1232
|
+
|
|
1233
|
+
|
|
1234
|
+
|
|
1235
|
+
|
|
1236
|
+
|
|
1237
|
+
|
|
1238
|
+
|
|
1239
|
+
* @example
|
|
1240
|
+
* // All elements (with duplicates)
|
|
1241
|
+
* const ms = new TreeMultiSet<number>();
|
|
1242
|
+
* ms.add(1, 2);
|
|
1243
|
+
* ms.add(2);
|
|
1244
|
+
* console.log(ms.toArray()); // [1, 1, 2];
|
|
1245
|
+
*/
|
|
1246
|
+
toArray(): K[];
|
|
1247
|
+
/**
|
|
1248
|
+
* Returns an array with distinct keys only.
|
|
1249
|
+
* @remarks Time O(n), Space O(n)
|
|
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
|
+
* @example
|
|
1277
|
+
* // Unique keys only
|
|
1278
|
+
* const ms = new TreeMultiSet<number>();
|
|
1279
|
+
* ms.add(1, 3);
|
|
1280
|
+
* ms.add(2);
|
|
1281
|
+
* console.log(ms.toDistinctArray()); // [1, 2];
|
|
1282
|
+
*/
|
|
1283
|
+
toDistinctArray(): K[];
|
|
1284
|
+
/**
|
|
1285
|
+
* Returns an array of [key, count] entries.
|
|
1286
|
+
* @remarks Time O(n), Space O(n)
|
|
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
|
+
* @example
|
|
1314
|
+
* // Key-count pairs
|
|
1315
|
+
* const ms = new TreeMultiSet<number>();
|
|
1316
|
+
* ms.add(1, 2);
|
|
1317
|
+
* ms.add(3);
|
|
1318
|
+
* console.log(ms.toEntries()); // [[1, 2], [3, 1]];
|
|
1319
|
+
*/
|
|
1320
|
+
toEntries(): Array<[K, number]>;
|
|
1321
|
+
/**
|
|
1322
|
+
* Expose comparator for advanced usage/testing (read-only).
|
|
1323
|
+
* @remarks Time O(1), Space O(1)
|
|
1324
|
+
*/
|
|
1325
|
+
get comparator(): Comparator<K>;
|
|
1326
|
+
/**
|
|
1327
|
+
* Remove all elements from the multiset.
|
|
1328
|
+
* @remarks Time O(1), Space O(1)
|
|
1329
|
+
|
|
1330
|
+
|
|
1331
|
+
|
|
1332
|
+
|
|
1333
|
+
|
|
1334
|
+
|
|
1335
|
+
|
|
1336
|
+
|
|
1337
|
+
|
|
1338
|
+
|
|
1339
|
+
|
|
1340
|
+
|
|
1341
|
+
|
|
1342
|
+
|
|
1343
|
+
|
|
1344
|
+
|
|
1345
|
+
|
|
1346
|
+
|
|
1347
|
+
|
|
1348
|
+
|
|
1349
|
+
|
|
1350
|
+
|
|
1351
|
+
|
|
1352
|
+
|
|
1353
|
+
|
|
1354
|
+
|
|
1355
|
+
|
|
1356
|
+
|
|
1357
|
+
|
|
1358
|
+
|
|
1359
|
+
|
|
1360
|
+
|
|
1361
|
+
|
|
1362
|
+
|
|
1363
|
+
|
|
1364
|
+
|
|
1365
|
+
|
|
1366
|
+
|
|
1367
|
+
|
|
1368
|
+
|
|
1369
|
+
|
|
1370
|
+
|
|
1371
|
+
|
|
1372
|
+
|
|
1373
|
+
|
|
1374
|
+
|
|
1375
|
+
|
|
1376
|
+
|
|
1377
|
+
|
|
1378
|
+
|
|
1379
|
+
|
|
1380
|
+
|
|
1381
|
+
|
|
1382
|
+
|
|
1383
|
+
|
|
1384
|
+
|
|
1385
|
+
|
|
1386
|
+
|
|
1387
|
+
|
|
1388
|
+
|
|
1389
|
+
|
|
1390
|
+
|
|
1391
|
+
|
|
1392
|
+
|
|
1393
|
+
|
|
1394
|
+
|
|
1395
|
+
|
|
1396
|
+
|
|
1397
|
+
|
|
1398
|
+
|
|
1399
|
+
|
|
1400
|
+
|
|
1401
|
+
|
|
1402
|
+
|
|
1403
|
+
|
|
1404
|
+
|
|
1405
|
+
|
|
1406
|
+
|
|
1407
|
+
|
|
1408
|
+
|
|
1409
|
+
|
|
1410
|
+
|
|
1411
|
+
|
|
1412
|
+
|
|
1413
|
+
|
|
1414
|
+
|
|
1415
|
+
|
|
1416
|
+
|
|
1417
|
+
|
|
1418
|
+
|
|
1419
|
+
|
|
1420
|
+
|
|
1421
|
+
|
|
1422
|
+
|
|
1423
|
+
|
|
1424
|
+
|
|
1425
|
+
|
|
1426
|
+
|
|
1427
|
+
|
|
1428
|
+
|
|
1429
|
+
|
|
1430
|
+
|
|
1431
|
+
|
|
1432
|
+
|
|
1433
|
+
|
|
1434
|
+
|
|
1435
|
+
|
|
1436
|
+
|
|
1437
|
+
|
|
1438
|
+
|
|
1439
|
+
|
|
1440
|
+
|
|
1441
|
+
|
|
1442
|
+
|
|
1443
|
+
|
|
1444
|
+
|
|
1445
|
+
|
|
1446
|
+
|
|
1447
|
+
|
|
1448
|
+
|
|
1449
|
+
|
|
1450
|
+
|
|
1451
|
+
|
|
1452
|
+
|
|
1453
|
+
|
|
1454
|
+
|
|
1455
|
+
|
|
1456
|
+
|
|
1457
|
+
|
|
1458
|
+
|
|
1459
|
+
|
|
1460
|
+
|
|
1461
|
+
|
|
1462
|
+
|
|
1463
|
+
|
|
1464
|
+
|
|
1465
|
+
|
|
1466
|
+
|
|
1467
|
+
|
|
1468
|
+
|
|
1469
|
+
|
|
1470
|
+
|
|
1471
|
+
|
|
1472
|
+
|
|
1473
|
+
|
|
1474
|
+
|
|
1475
|
+
|
|
1476
|
+
|
|
1477
|
+
|
|
1478
|
+
|
|
1479
|
+
|
|
1480
|
+
|
|
1481
|
+
|
|
1482
|
+
|
|
1483
|
+
|
|
1484
|
+
|
|
1485
|
+
|
|
1486
|
+
|
|
1487
|
+
|
|
1488
|
+
* @example
|
|
1489
|
+
* // Remove all
|
|
1490
|
+
* const ms = new TreeMultiSet<number>();
|
|
1491
|
+
* ms.add(1);
|
|
1492
|
+
* ms.clear();
|
|
1493
|
+
* console.log(ms.isEmpty()); // true;
|
|
1494
|
+
*/
|
|
1495
|
+
clear(): void;
|
|
1496
|
+
/**
|
|
1497
|
+
* Returns the smallest key, or undefined if empty.
|
|
1498
|
+
* @remarks Time O(log n), Space O(1)
|
|
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
|
+
* @example
|
|
1527
|
+
* // Smallest element
|
|
1528
|
+
* const ms = new TreeMultiSet<number>();
|
|
1529
|
+
* ms.add(3);
|
|
1530
|
+
* ms.add(1);
|
|
1531
|
+
* console.log(ms.first()); // 1;
|
|
1532
|
+
*/
|
|
1533
|
+
first(): K | undefined;
|
|
1534
|
+
/**
|
|
1535
|
+
* Returns the largest key, or undefined if empty.
|
|
1536
|
+
* @remarks Time O(log n), Space O(1)
|
|
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
|
+
* @example
|
|
1565
|
+
* // Largest element
|
|
1566
|
+
* const ms = new TreeMultiSet<number>();
|
|
1567
|
+
* ms.add(1);
|
|
1568
|
+
* ms.add(3);
|
|
1569
|
+
* console.log(ms.last()); // 3;
|
|
1570
|
+
*/
|
|
1571
|
+
last(): K | undefined;
|
|
1572
|
+
/**
|
|
1573
|
+
* Removes all occurrences of the smallest key and returns it.
|
|
1574
|
+
* @remarks Time O(log n), Space O(1)
|
|
1575
|
+
|
|
1576
|
+
|
|
1577
|
+
|
|
1578
|
+
|
|
1579
|
+
|
|
1580
|
+
|
|
1581
|
+
|
|
1582
|
+
|
|
1583
|
+
|
|
1584
|
+
|
|
1585
|
+
|
|
1586
|
+
|
|
1587
|
+
|
|
1588
|
+
|
|
1589
|
+
|
|
1590
|
+
|
|
1591
|
+
|
|
1592
|
+
|
|
1593
|
+
|
|
1594
|
+
|
|
1595
|
+
|
|
1596
|
+
|
|
1597
|
+
|
|
1598
|
+
|
|
1599
|
+
|
|
1600
|
+
|
|
1601
|
+
|
|
1602
|
+
* @example
|
|
1603
|
+
* // Remove and return smallest
|
|
1604
|
+
* const ms = new TreeMultiSet<number>();
|
|
1605
|
+
* ms.add(2);
|
|
1606
|
+
* ms.add(1);
|
|
1607
|
+
* console.log(ms.pollFirst()); // 1;
|
|
1608
|
+
* console.log(ms.has(1)); // false;
|
|
1609
|
+
*/
|
|
1610
|
+
pollFirst(): K | undefined;
|
|
1611
|
+
/**
|
|
1612
|
+
* Removes all occurrences of the largest key and returns it.
|
|
1613
|
+
* @remarks Time O(log n), Space O(1)
|
|
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
|
+
* @example
|
|
1642
|
+
* // Remove and return largest
|
|
1643
|
+
* const ms = new TreeMultiSet<number>();
|
|
1644
|
+
* ms.add(1);
|
|
1645
|
+
* ms.add(3);
|
|
1646
|
+
* console.log(ms.pollLast()); // 3;
|
|
1647
|
+
*/
|
|
1648
|
+
pollLast(): K | undefined;
|
|
1649
|
+
/**
|
|
1650
|
+
* Returns the smallest key >= given key, or undefined.
|
|
1651
|
+
* @remarks Time O(log n), Space O(1)
|
|
1652
|
+
|
|
1653
|
+
|
|
1654
|
+
|
|
1655
|
+
|
|
1656
|
+
|
|
1657
|
+
|
|
1658
|
+
|
|
1659
|
+
|
|
1660
|
+
|
|
1661
|
+
|
|
1662
|
+
|
|
1663
|
+
|
|
1664
|
+
|
|
1665
|
+
|
|
1666
|
+
|
|
1667
|
+
|
|
1668
|
+
|
|
1669
|
+
|
|
1670
|
+
|
|
1671
|
+
|
|
1672
|
+
|
|
1673
|
+
|
|
1674
|
+
|
|
1675
|
+
|
|
1676
|
+
|
|
1677
|
+
|
|
1678
|
+
|
|
1679
|
+
|
|
1680
|
+
|
|
1681
|
+
|
|
1682
|
+
|
|
1683
|
+
|
|
1684
|
+
|
|
1685
|
+
|
|
1686
|
+
|
|
1687
|
+
|
|
1688
|
+
|
|
1689
|
+
|
|
1690
|
+
|
|
1691
|
+
|
|
1692
|
+
|
|
1693
|
+
|
|
1694
|
+
|
|
1695
|
+
|
|
1696
|
+
|
|
1697
|
+
|
|
1698
|
+
|
|
1699
|
+
|
|
1700
|
+
|
|
1701
|
+
|
|
1702
|
+
|
|
1703
|
+
|
|
1704
|
+
|
|
1705
|
+
|
|
1706
|
+
|
|
1707
|
+
|
|
1708
|
+
|
|
1709
|
+
|
|
1710
|
+
|
|
1711
|
+
|
|
1712
|
+
|
|
1713
|
+
|
|
1714
|
+
|
|
1715
|
+
|
|
1716
|
+
|
|
1717
|
+
|
|
1718
|
+
|
|
1719
|
+
|
|
1720
|
+
|
|
1721
|
+
|
|
1722
|
+
|
|
1723
|
+
|
|
1724
|
+
|
|
1725
|
+
|
|
1726
|
+
|
|
1727
|
+
|
|
1728
|
+
|
|
1729
|
+
|
|
1730
|
+
|
|
1731
|
+
|
|
1732
|
+
|
|
1733
|
+
|
|
1734
|
+
|
|
1735
|
+
|
|
1736
|
+
|
|
1737
|
+
|
|
1738
|
+
|
|
1739
|
+
|
|
1740
|
+
|
|
1741
|
+
|
|
1742
|
+
|
|
1743
|
+
|
|
1744
|
+
|
|
1745
|
+
|
|
1746
|
+
|
|
1747
|
+
|
|
1748
|
+
|
|
1749
|
+
|
|
1750
|
+
|
|
1751
|
+
|
|
1752
|
+
|
|
1753
|
+
|
|
1754
|
+
|
|
1755
|
+
|
|
1756
|
+
|
|
1757
|
+
|
|
1758
|
+
|
|
1759
|
+
|
|
1760
|
+
|
|
1761
|
+
|
|
1762
|
+
|
|
1763
|
+
|
|
1764
|
+
|
|
1765
|
+
|
|
1766
|
+
|
|
1767
|
+
|
|
1768
|
+
|
|
1769
|
+
|
|
1770
|
+
|
|
1771
|
+
|
|
1772
|
+
|
|
1773
|
+
|
|
1774
|
+
|
|
1775
|
+
|
|
1776
|
+
|
|
1777
|
+
|
|
1778
|
+
* @example
|
|
1779
|
+
* // Least key ≥ target
|
|
1780
|
+
* const ms = new TreeMultiSet<number>();
|
|
1781
|
+
* ms.add(10);
|
|
1782
|
+
* ms.add(20);
|
|
1783
|
+
* ms.add(30);
|
|
1784
|
+
* console.log(ms.ceiling(15)); // 20;
|
|
1785
|
+
*/
|
|
1786
|
+
ceiling(key: K): K | undefined;
|
|
1787
|
+
/**
|
|
1788
|
+
* Returns the largest key <= given key, or undefined.
|
|
1789
|
+
* @remarks Time O(log n), Space O(1)
|
|
1790
|
+
|
|
1791
|
+
|
|
1792
|
+
|
|
1793
|
+
|
|
1794
|
+
|
|
1795
|
+
|
|
1796
|
+
|
|
1797
|
+
|
|
1798
|
+
|
|
1799
|
+
|
|
1800
|
+
|
|
1801
|
+
|
|
1802
|
+
|
|
1803
|
+
|
|
1804
|
+
|
|
1805
|
+
|
|
1806
|
+
|
|
1807
|
+
|
|
1808
|
+
|
|
1809
|
+
|
|
1810
|
+
|
|
1811
|
+
|
|
1812
|
+
|
|
1813
|
+
|
|
1814
|
+
|
|
1815
|
+
|
|
1816
|
+
|
|
1817
|
+
|
|
1818
|
+
|
|
1819
|
+
|
|
1820
|
+
|
|
1821
|
+
|
|
1822
|
+
|
|
1823
|
+
|
|
1824
|
+
|
|
1825
|
+
|
|
1826
|
+
|
|
1827
|
+
|
|
1828
|
+
|
|
1829
|
+
|
|
1830
|
+
|
|
1831
|
+
|
|
1832
|
+
|
|
1833
|
+
|
|
1834
|
+
|
|
1835
|
+
|
|
1836
|
+
|
|
1837
|
+
|
|
1838
|
+
|
|
1839
|
+
|
|
1840
|
+
|
|
1841
|
+
|
|
1842
|
+
|
|
1843
|
+
|
|
1844
|
+
|
|
1845
|
+
|
|
1846
|
+
|
|
1847
|
+
|
|
1848
|
+
|
|
1849
|
+
|
|
1850
|
+
|
|
1851
|
+
|
|
1852
|
+
|
|
1853
|
+
|
|
1854
|
+
|
|
1855
|
+
|
|
1856
|
+
|
|
1857
|
+
|
|
1858
|
+
|
|
1859
|
+
|
|
1860
|
+
|
|
1861
|
+
|
|
1862
|
+
|
|
1863
|
+
|
|
1864
|
+
|
|
1865
|
+
|
|
1866
|
+
|
|
1867
|
+
|
|
1868
|
+
|
|
1869
|
+
|
|
1870
|
+
|
|
1871
|
+
|
|
1872
|
+
|
|
1873
|
+
|
|
1874
|
+
|
|
1875
|
+
|
|
1876
|
+
|
|
1877
|
+
|
|
1878
|
+
|
|
1879
|
+
|
|
1880
|
+
|
|
1881
|
+
|
|
1882
|
+
|
|
1883
|
+
|
|
1884
|
+
|
|
1885
|
+
|
|
1886
|
+
|
|
1887
|
+
|
|
1888
|
+
|
|
1889
|
+
|
|
1890
|
+
|
|
1891
|
+
|
|
1892
|
+
|
|
1893
|
+
|
|
1894
|
+
|
|
1895
|
+
|
|
1896
|
+
|
|
1897
|
+
|
|
1898
|
+
|
|
1899
|
+
|
|
1900
|
+
|
|
1901
|
+
|
|
1902
|
+
|
|
1903
|
+
|
|
1904
|
+
|
|
1905
|
+
|
|
1906
|
+
|
|
1907
|
+
|
|
1908
|
+
|
|
1909
|
+
|
|
1910
|
+
|
|
1911
|
+
|
|
1912
|
+
|
|
1913
|
+
|
|
1914
|
+
|
|
1915
|
+
|
|
1916
|
+
* @example
|
|
1917
|
+
* // Greatest key ≤ target
|
|
1918
|
+
* const ms = new TreeMultiSet<number>();
|
|
1919
|
+
* ms.add(10);
|
|
1920
|
+
* ms.add(20);
|
|
1921
|
+
* ms.add(30);
|
|
1922
|
+
* console.log(ms.floor(25)); // 20;
|
|
1923
|
+
*/
|
|
1924
|
+
floor(key: K): K | undefined;
|
|
1925
|
+
/**
|
|
1926
|
+
* Returns the smallest key > given key, or undefined.
|
|
1927
|
+
* @remarks Time O(log n), Space O(1)
|
|
1928
|
+
|
|
1929
|
+
|
|
1930
|
+
|
|
1931
|
+
|
|
1932
|
+
|
|
1933
|
+
|
|
1934
|
+
|
|
1935
|
+
|
|
1936
|
+
|
|
1937
|
+
|
|
1938
|
+
|
|
1939
|
+
|
|
1940
|
+
|
|
1941
|
+
|
|
1942
|
+
|
|
1943
|
+
|
|
1944
|
+
|
|
1945
|
+
|
|
1946
|
+
|
|
1947
|
+
|
|
1948
|
+
|
|
1949
|
+
|
|
1950
|
+
|
|
1951
|
+
|
|
1952
|
+
|
|
1953
|
+
|
|
1954
|
+
|
|
1955
|
+
|
|
1956
|
+
|
|
1957
|
+
|
|
1958
|
+
|
|
1959
|
+
|
|
1960
|
+
|
|
1961
|
+
|
|
1962
|
+
|
|
1963
|
+
|
|
1964
|
+
|
|
1965
|
+
|
|
1966
|
+
|
|
1967
|
+
|
|
1968
|
+
|
|
1969
|
+
|
|
1970
|
+
|
|
1971
|
+
|
|
1972
|
+
|
|
1973
|
+
|
|
1974
|
+
|
|
1975
|
+
|
|
1976
|
+
|
|
1977
|
+
|
|
1978
|
+
|
|
1979
|
+
|
|
1980
|
+
|
|
1981
|
+
|
|
1982
|
+
|
|
1983
|
+
|
|
1984
|
+
|
|
1985
|
+
|
|
1986
|
+
|
|
1987
|
+
|
|
1988
|
+
|
|
1989
|
+
|
|
1990
|
+
|
|
1991
|
+
|
|
1992
|
+
|
|
1993
|
+
|
|
1994
|
+
|
|
1995
|
+
|
|
1996
|
+
|
|
1997
|
+
|
|
1998
|
+
|
|
1999
|
+
|
|
2000
|
+
|
|
2001
|
+
|
|
2002
|
+
|
|
2003
|
+
|
|
2004
|
+
|
|
2005
|
+
|
|
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
|
+
* @example
|
|
2055
|
+
* // Least key > target
|
|
2056
|
+
* const ms = new TreeMultiSet<number>();
|
|
2057
|
+
* ms.add(10);
|
|
2058
|
+
* ms.add(20);
|
|
2059
|
+
* console.log(ms.higher(10)); // 20;
|
|
2060
|
+
*/
|
|
2061
|
+
higher(key: K): K | undefined;
|
|
2062
|
+
/**
|
|
2063
|
+
* Returns the largest key < given key, or undefined.
|
|
2064
|
+
* @remarks Time O(log n), Space O(1)
|
|
2065
|
+
|
|
2066
|
+
|
|
2067
|
+
|
|
2068
|
+
|
|
2069
|
+
|
|
2070
|
+
|
|
2071
|
+
|
|
2072
|
+
|
|
2073
|
+
|
|
2074
|
+
|
|
2075
|
+
|
|
2076
|
+
|
|
2077
|
+
|
|
2078
|
+
|
|
2079
|
+
|
|
2080
|
+
|
|
2081
|
+
|
|
2082
|
+
|
|
2083
|
+
|
|
2084
|
+
|
|
2085
|
+
|
|
2086
|
+
|
|
2087
|
+
|
|
2088
|
+
|
|
2089
|
+
|
|
2090
|
+
|
|
2091
|
+
|
|
2092
|
+
|
|
2093
|
+
|
|
2094
|
+
|
|
2095
|
+
|
|
2096
|
+
|
|
2097
|
+
|
|
2098
|
+
|
|
2099
|
+
|
|
2100
|
+
|
|
2101
|
+
|
|
2102
|
+
|
|
2103
|
+
|
|
2104
|
+
|
|
2105
|
+
|
|
2106
|
+
|
|
2107
|
+
|
|
2108
|
+
|
|
2109
|
+
|
|
2110
|
+
|
|
2111
|
+
|
|
2112
|
+
|
|
2113
|
+
|
|
2114
|
+
|
|
2115
|
+
|
|
2116
|
+
|
|
2117
|
+
|
|
2118
|
+
|
|
2119
|
+
|
|
2120
|
+
|
|
2121
|
+
|
|
2122
|
+
|
|
2123
|
+
|
|
2124
|
+
|
|
2125
|
+
|
|
2126
|
+
|
|
2127
|
+
|
|
2128
|
+
|
|
2129
|
+
|
|
2130
|
+
|
|
2131
|
+
|
|
2132
|
+
|
|
2133
|
+
|
|
2134
|
+
|
|
2135
|
+
|
|
2136
|
+
|
|
2137
|
+
|
|
2138
|
+
|
|
2139
|
+
|
|
2140
|
+
|
|
2141
|
+
|
|
2142
|
+
|
|
2143
|
+
|
|
2144
|
+
|
|
2145
|
+
|
|
2146
|
+
|
|
2147
|
+
|
|
2148
|
+
|
|
2149
|
+
|
|
2150
|
+
|
|
2151
|
+
|
|
2152
|
+
|
|
2153
|
+
|
|
2154
|
+
|
|
2155
|
+
|
|
2156
|
+
|
|
2157
|
+
|
|
2158
|
+
|
|
2159
|
+
|
|
2160
|
+
|
|
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
|
+
* @example
|
|
2192
|
+
* // Greatest key < target
|
|
2193
|
+
* const ms = new TreeMultiSet<number>();
|
|
2194
|
+
* ms.add(10);
|
|
2195
|
+
* ms.add(20);
|
|
2196
|
+
* console.log(ms.lower(20)); // 10;
|
|
2197
|
+
*/
|
|
2198
|
+
lower(key: K): K | undefined;
|
|
2199
|
+
/**
|
|
2200
|
+
* Iterates over distinct keys with their counts.
|
|
2201
|
+
* @remarks Time O(n), Space O(1)
|
|
2202
|
+
|
|
2203
|
+
|
|
2204
|
+
|
|
2205
|
+
|
|
2206
|
+
|
|
2207
|
+
|
|
2208
|
+
|
|
2209
|
+
|
|
2210
|
+
|
|
2211
|
+
|
|
2212
|
+
|
|
2213
|
+
|
|
2214
|
+
|
|
2215
|
+
|
|
2216
|
+
|
|
2217
|
+
|
|
2218
|
+
|
|
2219
|
+
|
|
2220
|
+
|
|
2221
|
+
|
|
2222
|
+
|
|
2223
|
+
|
|
2224
|
+
|
|
2225
|
+
|
|
2226
|
+
|
|
2227
|
+
|
|
2228
|
+
|
|
2229
|
+
|
|
2230
|
+
|
|
2231
|
+
|
|
2232
|
+
|
|
2233
|
+
|
|
2234
|
+
|
|
2235
|
+
|
|
2236
|
+
|
|
2237
|
+
|
|
2238
|
+
|
|
2239
|
+
|
|
2240
|
+
|
|
2241
|
+
|
|
2242
|
+
|
|
2243
|
+
|
|
2244
|
+
|
|
2245
|
+
|
|
2246
|
+
|
|
2247
|
+
|
|
2248
|
+
|
|
2249
|
+
|
|
2250
|
+
|
|
2251
|
+
|
|
2252
|
+
|
|
2253
|
+
|
|
2254
|
+
|
|
2255
|
+
|
|
2256
|
+
|
|
2257
|
+
|
|
2258
|
+
|
|
2259
|
+
|
|
2260
|
+
|
|
2261
|
+
|
|
2262
|
+
|
|
2263
|
+
|
|
2264
|
+
|
|
2265
|
+
|
|
2266
|
+
|
|
2267
|
+
|
|
2268
|
+
|
|
2269
|
+
|
|
2270
|
+
|
|
2271
|
+
|
|
2272
|
+
|
|
2273
|
+
|
|
2274
|
+
|
|
2275
|
+
|
|
2276
|
+
|
|
2277
|
+
|
|
2278
|
+
|
|
2279
|
+
|
|
2280
|
+
|
|
2281
|
+
|
|
2282
|
+
|
|
2283
|
+
|
|
2284
|
+
|
|
2285
|
+
|
|
2286
|
+
|
|
2287
|
+
|
|
2288
|
+
|
|
2289
|
+
|
|
2290
|
+
|
|
2291
|
+
|
|
2292
|
+
|
|
2293
|
+
|
|
2294
|
+
|
|
2295
|
+
|
|
2296
|
+
|
|
2297
|
+
|
|
2298
|
+
|
|
2299
|
+
|
|
2300
|
+
|
|
2301
|
+
|
|
2302
|
+
|
|
2303
|
+
|
|
2304
|
+
|
|
2305
|
+
|
|
2306
|
+
|
|
2307
|
+
|
|
2308
|
+
|
|
2309
|
+
|
|
2310
|
+
|
|
2311
|
+
|
|
2312
|
+
|
|
2313
|
+
|
|
2314
|
+
|
|
2315
|
+
|
|
2316
|
+
|
|
2317
|
+
|
|
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
|
+
* @example
|
|
2362
|
+
* // Iterate
|
|
2363
|
+
* const ms = new TreeMultiSet<number>();
|
|
2364
|
+
* ms.add(1, 2);
|
|
2365
|
+
* ms.add(2);
|
|
2366
|
+
* const pairs: [number, number][] = [];
|
|
2367
|
+
* ms.forEach((k, c) => pairs.push([k, c]));
|
|
2368
|
+
* console.log(pairs); // [[1, 2], [2, 1]];
|
|
2369
|
+
*/
|
|
2370
|
+
forEach(callback: (key: K, count: number) => void): void;
|
|
2371
|
+
/**
|
|
2372
|
+
* Creates a new TreeMultiSet with entries that match the predicate.
|
|
2373
|
+
* @remarks Time O(n log n), Space O(n)
|
|
2374
|
+
|
|
2375
|
+
|
|
2376
|
+
|
|
2377
|
+
|
|
2378
|
+
|
|
2379
|
+
|
|
2380
|
+
|
|
2381
|
+
|
|
2382
|
+
|
|
2383
|
+
|
|
2384
|
+
|
|
2385
|
+
|
|
2386
|
+
|
|
2387
|
+
|
|
2388
|
+
|
|
2389
|
+
|
|
2390
|
+
|
|
2391
|
+
|
|
2392
|
+
|
|
2393
|
+
|
|
2394
|
+
|
|
2395
|
+
|
|
2396
|
+
|
|
2397
|
+
|
|
2398
|
+
|
|
2399
|
+
|
|
2400
|
+
|
|
2401
|
+
|
|
2402
|
+
|
|
2403
|
+
|
|
2404
|
+
|
|
2405
|
+
|
|
2406
|
+
|
|
2407
|
+
|
|
2408
|
+
|
|
2409
|
+
|
|
2410
|
+
|
|
2411
|
+
|
|
2412
|
+
|
|
2413
|
+
|
|
2414
|
+
|
|
2415
|
+
|
|
2416
|
+
|
|
2417
|
+
|
|
2418
|
+
|
|
2419
|
+
|
|
2420
|
+
|
|
2421
|
+
|
|
2422
|
+
|
|
2423
|
+
|
|
2424
|
+
|
|
2425
|
+
|
|
2426
|
+
|
|
2427
|
+
|
|
2428
|
+
|
|
2429
|
+
|
|
2430
|
+
|
|
2431
|
+
|
|
2432
|
+
|
|
2433
|
+
|
|
2434
|
+
|
|
2435
|
+
|
|
2436
|
+
|
|
2437
|
+
|
|
2438
|
+
|
|
2439
|
+
|
|
2440
|
+
|
|
2441
|
+
|
|
2442
|
+
|
|
2443
|
+
|
|
2444
|
+
|
|
2445
|
+
|
|
2446
|
+
|
|
2447
|
+
|
|
2448
|
+
|
|
2449
|
+
|
|
2450
|
+
|
|
2451
|
+
|
|
2452
|
+
|
|
2453
|
+
|
|
2454
|
+
|
|
2455
|
+
|
|
2456
|
+
|
|
2457
|
+
|
|
2458
|
+
|
|
2459
|
+
|
|
2460
|
+
|
|
2461
|
+
|
|
2462
|
+
|
|
2463
|
+
|
|
2464
|
+
|
|
2465
|
+
|
|
2466
|
+
|
|
2467
|
+
|
|
2468
|
+
|
|
2469
|
+
|
|
2470
|
+
|
|
2471
|
+
|
|
2472
|
+
|
|
2473
|
+
|
|
2474
|
+
|
|
2475
|
+
|
|
2476
|
+
|
|
2477
|
+
|
|
2478
|
+
|
|
2479
|
+
|
|
2480
|
+
|
|
2481
|
+
|
|
2482
|
+
|
|
2483
|
+
|
|
2484
|
+
|
|
2485
|
+
|
|
2486
|
+
|
|
2487
|
+
|
|
2488
|
+
|
|
2489
|
+
|
|
2490
|
+
|
|
2491
|
+
|
|
2492
|
+
|
|
2493
|
+
|
|
2494
|
+
|
|
2495
|
+
|
|
2496
|
+
|
|
2497
|
+
|
|
2498
|
+
|
|
2499
|
+
|
|
2500
|
+
|
|
2501
|
+
|
|
2502
|
+
|
|
2503
|
+
|
|
2504
|
+
|
|
2505
|
+
|
|
2506
|
+
|
|
2507
|
+
|
|
2508
|
+
|
|
2509
|
+
|
|
2510
|
+
|
|
2511
|
+
|
|
2512
|
+
|
|
2513
|
+
|
|
2514
|
+
|
|
2515
|
+
|
|
2516
|
+
|
|
2517
|
+
|
|
2518
|
+
|
|
2519
|
+
|
|
2520
|
+
|
|
2521
|
+
|
|
2522
|
+
|
|
2523
|
+
|
|
2524
|
+
|
|
2525
|
+
|
|
2526
|
+
|
|
2527
|
+
|
|
2528
|
+
|
|
2529
|
+
|
|
2530
|
+
|
|
2531
|
+
|
|
2532
|
+
|
|
2533
|
+
* @example
|
|
2534
|
+
* // Filter
|
|
2535
|
+
* const ms = new TreeMultiSet<number>();
|
|
2536
|
+
* ms.add(1, 3);
|
|
2537
|
+
* ms.add(2, 1);
|
|
2538
|
+
* ms.add(3, 2);
|
|
2539
|
+
* const filtered = ms.filter((k, c) => c > 1);
|
|
2540
|
+
* console.log([...filtered.keysDistinct()]); // [1, 3];
|
|
2541
|
+
*/
|
|
2542
|
+
filter(predicate: (key: K, count: number) => boolean): TreeMultiSet<K>;
|
|
2543
|
+
/**
|
|
2544
|
+
* Reduces the multiset to a single value.
|
|
2545
|
+
* @remarks Time O(n), Space O(1)
|
|
2546
|
+
|
|
2547
|
+
|
|
2548
|
+
|
|
2549
|
+
|
|
2550
|
+
|
|
2551
|
+
|
|
2552
|
+
|
|
2553
|
+
|
|
2554
|
+
|
|
2555
|
+
|
|
2556
|
+
|
|
2557
|
+
|
|
2558
|
+
|
|
2559
|
+
|
|
2560
|
+
|
|
2561
|
+
|
|
2562
|
+
|
|
2563
|
+
|
|
2564
|
+
|
|
2565
|
+
|
|
2566
|
+
|
|
2567
|
+
|
|
2568
|
+
|
|
2569
|
+
|
|
2570
|
+
|
|
2571
|
+
|
|
2572
|
+
|
|
2573
|
+
|
|
2574
|
+
|
|
2575
|
+
|
|
2576
|
+
|
|
2577
|
+
|
|
2578
|
+
|
|
2579
|
+
|
|
2580
|
+
|
|
2581
|
+
|
|
2582
|
+
|
|
2583
|
+
|
|
2584
|
+
|
|
2585
|
+
|
|
2586
|
+
|
|
2587
|
+
|
|
2588
|
+
|
|
2589
|
+
|
|
2590
|
+
|
|
2591
|
+
|
|
2592
|
+
|
|
2593
|
+
|
|
2594
|
+
|
|
2595
|
+
|
|
2596
|
+
|
|
2597
|
+
|
|
2598
|
+
|
|
2599
|
+
|
|
2600
|
+
|
|
2601
|
+
|
|
2602
|
+
|
|
2603
|
+
|
|
2604
|
+
|
|
2605
|
+
|
|
2606
|
+
|
|
2607
|
+
|
|
2608
|
+
|
|
2609
|
+
|
|
2610
|
+
|
|
2611
|
+
|
|
2612
|
+
|
|
2613
|
+
|
|
2614
|
+
|
|
2615
|
+
|
|
2616
|
+
|
|
2617
|
+
|
|
2618
|
+
|
|
2619
|
+
|
|
2620
|
+
|
|
2621
|
+
|
|
2622
|
+
|
|
2623
|
+
|
|
2624
|
+
|
|
2625
|
+
|
|
2626
|
+
|
|
2627
|
+
|
|
2628
|
+
|
|
2629
|
+
|
|
2630
|
+
|
|
2631
|
+
|
|
2632
|
+
|
|
2633
|
+
|
|
2634
|
+
|
|
2635
|
+
|
|
2636
|
+
|
|
2637
|
+
|
|
2638
|
+
|
|
2639
|
+
|
|
2640
|
+
|
|
2641
|
+
|
|
2642
|
+
|
|
2643
|
+
|
|
2644
|
+
|
|
2645
|
+
|
|
2646
|
+
|
|
2647
|
+
|
|
2648
|
+
|
|
2649
|
+
|
|
2650
|
+
|
|
2651
|
+
|
|
2652
|
+
|
|
2653
|
+
|
|
2654
|
+
|
|
2655
|
+
|
|
2656
|
+
|
|
2657
|
+
|
|
2658
|
+
|
|
2659
|
+
|
|
2660
|
+
|
|
2661
|
+
|
|
2662
|
+
|
|
2663
|
+
|
|
2664
|
+
|
|
2665
|
+
|
|
2666
|
+
|
|
2667
|
+
|
|
2668
|
+
|
|
2669
|
+
|
|
2670
|
+
|
|
2671
|
+
|
|
2672
|
+
|
|
2673
|
+
|
|
2674
|
+
|
|
2675
|
+
|
|
2676
|
+
|
|
2677
|
+
|
|
2678
|
+
|
|
2679
|
+
|
|
2680
|
+
|
|
2681
|
+
|
|
2682
|
+
|
|
2683
|
+
|
|
2684
|
+
|
|
2685
|
+
|
|
2686
|
+
|
|
2687
|
+
|
|
2688
|
+
|
|
2689
|
+
|
|
2690
|
+
|
|
2691
|
+
|
|
2692
|
+
|
|
2693
|
+
|
|
2694
|
+
|
|
2695
|
+
|
|
2696
|
+
|
|
2697
|
+
|
|
2698
|
+
|
|
2699
|
+
|
|
2700
|
+
|
|
2701
|
+
|
|
2702
|
+
|
|
2703
|
+
|
|
2704
|
+
|
|
2705
|
+
* @example
|
|
2706
|
+
* // Aggregate
|
|
2707
|
+
* const ms = new TreeMultiSet<number>();
|
|
2708
|
+
* ms.add(1, 2);
|
|
2709
|
+
* ms.add(2, 3);
|
|
2710
|
+
* const sum = ms.reduce((acc, k, c) => acc + k * c, 0);
|
|
2711
|
+
* console.log(sum); // 8;
|
|
2712
|
+
*/
|
|
2713
|
+
reduce<U>(callback: (accumulator: U, key: K, count: number) => U, initialValue: U): U;
|
|
2714
|
+
/**
|
|
2715
|
+
* Maps keys and counts to a new TreeMultiSet.
|
|
2716
|
+
* When multiple keys map to the same new key, counts are merged (added).
|
|
2717
|
+
* @remarks Time O(n log n), Space O(n)
|
|
2718
|
+
|
|
2719
|
+
|
|
2720
|
+
|
|
2721
|
+
|
|
2722
|
+
|
|
2723
|
+
|
|
2724
|
+
|
|
2725
|
+
|
|
2726
|
+
|
|
2727
|
+
|
|
2728
|
+
|
|
2729
|
+
|
|
2730
|
+
|
|
2731
|
+
|
|
2732
|
+
|
|
2733
|
+
|
|
2734
|
+
|
|
2735
|
+
|
|
2736
|
+
|
|
2737
|
+
|
|
2738
|
+
|
|
2739
|
+
|
|
2740
|
+
|
|
2741
|
+
|
|
2742
|
+
|
|
2743
|
+
|
|
2744
|
+
|
|
2745
|
+
|
|
2746
|
+
|
|
2747
|
+
|
|
2748
|
+
|
|
2749
|
+
|
|
2750
|
+
|
|
2751
|
+
|
|
2752
|
+
|
|
2753
|
+
|
|
2754
|
+
|
|
2755
|
+
|
|
2756
|
+
|
|
2757
|
+
|
|
2758
|
+
|
|
2759
|
+
|
|
2760
|
+
|
|
2761
|
+
|
|
2762
|
+
|
|
2763
|
+
|
|
2764
|
+
|
|
2765
|
+
|
|
2766
|
+
|
|
2767
|
+
|
|
2768
|
+
|
|
2769
|
+
|
|
2770
|
+
|
|
2771
|
+
|
|
2772
|
+
|
|
2773
|
+
|
|
2774
|
+
|
|
2775
|
+
|
|
2776
|
+
|
|
2777
|
+
|
|
2778
|
+
|
|
2779
|
+
|
|
2780
|
+
|
|
2781
|
+
|
|
2782
|
+
|
|
2783
|
+
|
|
2784
|
+
|
|
2785
|
+
|
|
2786
|
+
|
|
2787
|
+
|
|
2788
|
+
|
|
2789
|
+
|
|
2790
|
+
|
|
2791
|
+
|
|
2792
|
+
|
|
2793
|
+
|
|
2794
|
+
|
|
2795
|
+
|
|
2796
|
+
|
|
2797
|
+
|
|
2798
|
+
|
|
2799
|
+
|
|
2800
|
+
|
|
2801
|
+
|
|
2802
|
+
|
|
2803
|
+
|
|
2804
|
+
|
|
2805
|
+
|
|
2806
|
+
|
|
2807
|
+
|
|
2808
|
+
|
|
2809
|
+
|
|
2810
|
+
|
|
2811
|
+
|
|
2812
|
+
|
|
2813
|
+
|
|
2814
|
+
|
|
2815
|
+
|
|
2816
|
+
|
|
2817
|
+
|
|
2818
|
+
|
|
2819
|
+
|
|
2820
|
+
|
|
2821
|
+
|
|
2822
|
+
|
|
2823
|
+
|
|
2824
|
+
|
|
2825
|
+
|
|
2826
|
+
|
|
2827
|
+
|
|
2828
|
+
|
|
2829
|
+
|
|
2830
|
+
|
|
2831
|
+
|
|
2832
|
+
|
|
2833
|
+
|
|
2834
|
+
|
|
2835
|
+
|
|
2836
|
+
|
|
2837
|
+
|
|
2838
|
+
|
|
2839
|
+
|
|
2840
|
+
|
|
2841
|
+
|
|
2842
|
+
|
|
2843
|
+
|
|
2844
|
+
|
|
2845
|
+
|
|
2846
|
+
|
|
2847
|
+
|
|
2848
|
+
|
|
2849
|
+
|
|
2850
|
+
|
|
2851
|
+
|
|
2852
|
+
|
|
2853
|
+
|
|
2854
|
+
|
|
2855
|
+
|
|
2856
|
+
|
|
2857
|
+
|
|
2858
|
+
|
|
2859
|
+
|
|
2860
|
+
|
|
2861
|
+
|
|
2862
|
+
|
|
2863
|
+
|
|
2864
|
+
|
|
2865
|
+
|
|
2866
|
+
|
|
2867
|
+
|
|
2868
|
+
|
|
2869
|
+
|
|
2870
|
+
|
|
2871
|
+
|
|
2872
|
+
|
|
2873
|
+
|
|
2874
|
+
|
|
2875
|
+
|
|
2876
|
+
|
|
2877
|
+
* @example
|
|
2878
|
+
* // Transform
|
|
2879
|
+
* const ms = new TreeMultiSet<number>();
|
|
2880
|
+
* ms.add(1, 2);
|
|
2881
|
+
* ms.add(2, 3);
|
|
2882
|
+
* const doubled = ms.map((k, c) => [k * 10, c] as [number, number]);
|
|
2883
|
+
* console.log([...doubled.keysDistinct()]); // [10, 20];
|
|
2884
|
+
*/
|
|
2885
|
+
map<K2>(mapper: (key: K, count: number) => [K2, number], options?: {
|
|
2886
|
+
comparator?: Comparator<K2>;
|
|
2887
|
+
}): TreeMultiSet<K2>;
|
|
2888
|
+
/**
|
|
2889
|
+
* Creates an independent copy of this multiset.
|
|
2890
|
+
* @remarks Time O(n log n), Space O(n)
|
|
2891
|
+
|
|
2892
|
+
|
|
2893
|
+
|
|
2894
|
+
|
|
383
2895
|
|
|
384
2896
|
|
|
385
2897
|
|
|
@@ -396,49 +2908,10 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
396
2908
|
|
|
397
2909
|
|
|
398
2910
|
|
|
399
|
-
* @example
|
|
400
|
-
* // All elements (with duplicates)
|
|
401
|
-
* const ms = new TreeMultiSet<number>();
|
|
402
|
-
* ms.add(1, 2);
|
|
403
|
-
* ms.add(2);
|
|
404
|
-
* console.log(ms.toArray()); // [1, 1, 2];
|
|
405
|
-
*/
|
|
406
|
-
toArray(): K[];
|
|
407
|
-
/**
|
|
408
|
-
* Returns an array with distinct keys only.
|
|
409
|
-
* @remarks Time O(n), Space O(n)
|
|
410
2911
|
|
|
411
2912
|
|
|
412
|
-
* @example
|
|
413
|
-
* // Unique keys only
|
|
414
|
-
* const ms = new TreeMultiSet<number>();
|
|
415
|
-
* ms.add(1, 3);
|
|
416
|
-
* ms.add(2);
|
|
417
|
-
* console.log(ms.toDistinctArray()); // [1, 2];
|
|
418
|
-
*/
|
|
419
|
-
toDistinctArray(): K[];
|
|
420
|
-
/**
|
|
421
|
-
* Returns an array of [key, count] entries.
|
|
422
|
-
* @remarks Time O(n), Space O(n)
|
|
423
2913
|
|
|
424
2914
|
|
|
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
2915
|
|
|
443
2916
|
|
|
444
2917
|
|
|
@@ -477,75 +2950,14 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
477
2950
|
|
|
478
2951
|
|
|
479
2952
|
|
|
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
2953
|
|
|
493
2954
|
|
|
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
2955
|
|
|
507
2956
|
|
|
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
2957
|
|
|
521
2958
|
|
|
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
2959
|
|
|
536
2960
|
|
|
537
|
-
* @example
|
|
538
|
-
* // Remove and return largest
|
|
539
|
-
* const ms = new TreeMultiSet<number>();
|
|
540
|
-
* ms.add(1);
|
|
541
|
-
* ms.add(3);
|
|
542
|
-
* console.log(ms.pollLast()); // 3;
|
|
543
|
-
*/
|
|
544
|
-
pollLast(): K | undefined;
|
|
545
|
-
/**
|
|
546
|
-
* Returns the smallest key >= given key, or undefined.
|
|
547
|
-
* @remarks Time O(log n), Space O(1)
|
|
548
|
-
|
|
549
2961
|
|
|
550
2962
|
|
|
551
2963
|
|
|
@@ -575,19 +2987,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
575
2987
|
|
|
576
2988
|
|
|
577
2989
|
|
|
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
2990
|
|
|
592
2991
|
|
|
593
2992
|
|
|
@@ -617,19 +3016,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
617
3016
|
|
|
618
3017
|
|
|
619
3018
|
|
|
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
3019
|
|
|
634
3020
|
|
|
635
3021
|
|
|
@@ -660,16 +3046,64 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
660
3046
|
|
|
661
3047
|
|
|
662
3048
|
* @example
|
|
663
|
-
* //
|
|
664
|
-
* const
|
|
665
|
-
*
|
|
666
|
-
*
|
|
667
|
-
* console.log(
|
|
3049
|
+
* // Order-statistic on BST
|
|
3050
|
+
* const tree = new TreeMultiSet<number>([30, 10, 50, 20, 40], { enableOrderStatistic: true });
|
|
3051
|
+
* console.log(tree.getByRank(0)); // 10;
|
|
3052
|
+
* console.log(tree.getByRank(4)); // 50;
|
|
3053
|
+
* console.log(tree.getRank(30)); // 2;
|
|
668
3054
|
*/
|
|
669
|
-
|
|
3055
|
+
getByRank(k: number): K | undefined;
|
|
670
3056
|
/**
|
|
671
|
-
|
|
672
|
-
|
|
3057
|
+
* Get the rank of a key in sorted order
|
|
3058
|
+
* @example
|
|
3059
|
+
* // Get the rank of a key in sorted order
|
|
3060
|
+
* const tree = new TreeMultiSet<number>(
|
|
3061
|
+
* [10, 20, 30, 40, 50],
|
|
3062
|
+
* { enableOrderStatistic: true }
|
|
3063
|
+
* );
|
|
3064
|
+
* console.log(tree.getRank(10)); // 0; // smallest → rank 0
|
|
3065
|
+
* console.log(tree.getRank(30)); // 2; // 2 elements before 30 in tree order
|
|
3066
|
+
* console.log(tree.getRank(50)); // 4; // largest → rank 4
|
|
3067
|
+
* console.log(tree.getRank(25)); // 2;
|
|
3068
|
+
*/
|
|
3069
|
+
getRank(key: K): number;
|
|
3070
|
+
/**
|
|
3071
|
+
* Get elements by rank range
|
|
3072
|
+
|
|
3073
|
+
* @example
|
|
3074
|
+
* // Pagination with rangeByRank
|
|
3075
|
+
* const tree = new TreeMultiSet<number>(
|
|
3076
|
+
* [10, 20, 30, 40, 50, 60, 70, 80, 90],
|
|
3077
|
+
* { enableOrderStatistic: true }
|
|
3078
|
+
* );
|
|
3079
|
+
* const pageSize = 3;
|
|
3080
|
+
*
|
|
3081
|
+
* // Page 1
|
|
3082
|
+
* console.log(tree.rangeByRank(0, pageSize - 1)); // [10, 20, 30];
|
|
3083
|
+
* // Page 2
|
|
3084
|
+
* console.log(tree.rangeByRank(pageSize, 2 * pageSize - 1)); // [40, 50, 60];
|
|
3085
|
+
* // Page 3
|
|
3086
|
+
* console.log(tree.rangeByRank(2 * pageSize, 3 * pageSize - 1)); // [70, 80, 90];
|
|
3087
|
+
*/
|
|
3088
|
+
rangeByRank(start: number, end: number): K[];
|
|
3089
|
+
/**
|
|
3090
|
+
* Deep copy
|
|
3091
|
+
|
|
3092
|
+
|
|
3093
|
+
|
|
3094
|
+
|
|
3095
|
+
* @example
|
|
3096
|
+
* // Deep clone
|
|
3097
|
+
* const ms = new TreeMultiSet<number>();
|
|
3098
|
+
* ms.add(1, 3);
|
|
3099
|
+
* const copy = ms.clone();
|
|
3100
|
+
* copy.deleteAll(1);
|
|
3101
|
+
* console.log(ms.has(1)); // true;
|
|
3102
|
+
*/
|
|
3103
|
+
clone(): TreeMultiSet<K>;
|
|
3104
|
+
/**
|
|
3105
|
+
* Returns keys within the given range.
|
|
3106
|
+
* @remarks Time O(log n + k), Space O(k) where k is result size
|
|
673
3107
|
|
|
674
3108
|
|
|
675
3109
|
|
|
@@ -700,21 +3134,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
700
3134
|
|
|
701
3135
|
|
|
702
3136
|
|
|
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
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
3137
|
|
|
719
3138
|
|
|
720
3139
|
|
|
@@ -750,20 +3169,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
750
3169
|
|
|
751
3170
|
|
|
752
3171
|
|
|
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
3172
|
|
|
768
3173
|
|
|
769
3174
|
|
|
@@ -802,20 +3207,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
802
3207
|
|
|
803
3208
|
|
|
804
3209
|
|
|
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
3210
|
|
|
820
3211
|
|
|
821
3212
|
|
|
@@ -839,6 +3230,20 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
839
3230
|
|
|
840
3231
|
|
|
841
3232
|
|
|
3233
|
+
* @example
|
|
3234
|
+
* // Find in range
|
|
3235
|
+
* const ms = new TreeMultiSet<number>();
|
|
3236
|
+
* ms.add(10);
|
|
3237
|
+
* ms.add(20);
|
|
3238
|
+
* ms.add(30);
|
|
3239
|
+
* const result = ms.rangeSearch([15, 25]);
|
|
3240
|
+
* console.log(result.length); // 1;
|
|
3241
|
+
*/
|
|
3242
|
+
rangeSearch<C extends (key: K) => any>(range: [K, K], callback?: C): (C extends undefined ? K : ReturnType<C>)[];
|
|
3243
|
+
/**
|
|
3244
|
+
* Prints the internal tree structure (for debugging).
|
|
3245
|
+
* @remarks Time O(n), Space O(n)
|
|
3246
|
+
|
|
842
3247
|
|
|
843
3248
|
|
|
844
3249
|
|
|
@@ -854,20 +3259,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
854
3259
|
|
|
855
3260
|
|
|
856
3261
|
|
|
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
3262
|
|
|
872
3263
|
|
|
873
3264
|
|
|
@@ -906,21 +3297,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
906
3297
|
|
|
907
3298
|
|
|
908
3299
|
|
|
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
3300
|
|
|
925
3301
|
|
|
926
3302
|
|
|
@@ -959,19 +3335,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
959
3335
|
|
|
960
3336
|
|
|
961
3337
|
|
|
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
3338
|
|
|
976
3339
|
|
|
977
3340
|
|
|
@@ -1001,20 +3364,6 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
|
|
|
1001
3364
|
|
|
1002
3365
|
|
|
1003
3366
|
|
|
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
3367
|
|
|
1019
3368
|
|
|
1020
3369
|
|