data-structure-typed 2.6.0 → 2.6.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/.github/workflows/ci.yml +7 -2
- package/.github/workflows/release-package.yml +9 -2
- package/CHANGELOG.md +9 -1
- package/dist/cjs/binary-tree.cjs +2927 -23688
- package/dist/cjs/graph.cjs +845 -2634
- package/dist/cjs/hash.cjs +185 -616
- package/dist/cjs/heap.cjs +266 -818
- package/dist/cjs/index.cjs +5116 -31358
- package/dist/cjs/linked-list.cjs +644 -2615
- package/dist/cjs/matrix.cjs +220 -535
- package/dist/cjs/priority-queue.cjs +266 -818
- package/dist/cjs/queue.cjs +637 -2343
- package/dist/cjs/stack.cjs +124 -530
- package/dist/cjs/trie.cjs +145 -592
- package/dist/cjs-legacy/binary-tree.cjs +4352 -25113
- package/dist/cjs-legacy/graph.cjs +847 -2636
- package/dist/cjs-legacy/hash.cjs +181 -612
- package/dist/cjs-legacy/heap.cjs +266 -818
- package/dist/cjs-legacy/index.cjs +6657 -32899
- package/dist/cjs-legacy/linked-list.cjs +640 -2611
- package/dist/cjs-legacy/matrix.cjs +220 -535
- package/dist/cjs-legacy/priority-queue.cjs +266 -818
- package/dist/cjs-legacy/queue.cjs +634 -2340
- package/dist/cjs-legacy/stack.cjs +124 -530
- package/dist/cjs-legacy/trie.cjs +145 -592
- package/dist/esm/binary-tree.mjs +2927 -23688
- package/dist/esm/graph.mjs +845 -2634
- package/dist/esm/hash.mjs +185 -616
- package/dist/esm/heap.mjs +266 -818
- package/dist/esm/index.mjs +5116 -31358
- package/dist/esm/linked-list.mjs +644 -2615
- package/dist/esm/matrix.mjs +220 -535
- package/dist/esm/priority-queue.mjs +266 -818
- package/dist/esm/queue.mjs +637 -2343
- package/dist/esm/stack.mjs +124 -530
- package/dist/esm/trie.mjs +145 -592
- package/dist/esm-legacy/binary-tree.mjs +4352 -25113
- package/dist/esm-legacy/graph.mjs +847 -2636
- package/dist/esm-legacy/hash.mjs +181 -612
- package/dist/esm-legacy/heap.mjs +266 -818
- package/dist/esm-legacy/index.mjs +6657 -32899
- package/dist/esm-legacy/linked-list.mjs +640 -2611
- package/dist/esm-legacy/matrix.mjs +220 -535
- package/dist/esm-legacy/priority-queue.mjs +266 -818
- package/dist/esm-legacy/queue.mjs +634 -2340
- package/dist/esm-legacy/stack.mjs +124 -530
- package/dist/esm-legacy/trie.mjs +145 -592
- package/dist/types/data-structures/binary-tree/avl-tree.d.ts +29 -500
- package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +38 -563
- package/dist/types/data-structures/binary-tree/binary-tree.d.ts +230 -1212
- package/dist/types/data-structures/binary-tree/bst.d.ts +124 -1063
- package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +99 -854
- package/dist/types/data-structures/binary-tree/segment-tree.d.ts +62 -314
- package/dist/types/data-structures/binary-tree/tree-map.d.ts +366 -5057
- package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +277 -4885
- package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +253 -3929
- package/dist/types/data-structures/binary-tree/tree-set.d.ts +261 -4782
- package/dist/types/data-structures/graph/abstract-graph.d.ts +44 -44
- package/dist/types/data-structures/graph/directed-graph.d.ts +130 -527
- package/dist/types/data-structures/graph/undirected-graph.d.ts +125 -482
- package/dist/types/data-structures/hash/hash-map.d.ts +132 -562
- package/dist/types/data-structures/heap/heap.d.ts +194 -746
- package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +120 -809
- package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +121 -733
- package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +193 -863
- package/dist/types/data-structures/matrix/matrix.d.ts +159 -474
- package/dist/types/data-structures/priority-queue/max-priority-queue.d.ts +1 -6
- package/dist/types/data-structures/priority-queue/min-priority-queue.d.ts +6 -11
- package/dist/types/data-structures/priority-queue/priority-queue.d.ts +1 -1
- package/dist/types/data-structures/queue/deque.d.ts +196 -804
- package/dist/types/data-structures/queue/queue.d.ts +99 -585
- package/dist/types/data-structures/stack/stack.d.ts +75 -481
- package/dist/types/data-structures/trie/trie.d.ts +98 -584
- package/dist/umd/data-structure-typed.js +6580 -32822
- package/dist/umd/data-structure-typed.min.js +3 -3
- package/docs-site-docusaurus/docs/api/classes/AVLTree.md +162 -215
- package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +9 -9
- package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +47 -47
- package/docs-site-docusaurus/docs/api/classes/BST.md +155 -208
- package/docs-site-docusaurus/docs/api/classes/BSTNode.md +7 -7
- package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +13 -29
- package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +104 -158
- package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +13 -13
- package/docs-site-docusaurus/docs/api/classes/Deque.md +253 -101
- package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +60 -80
- package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +244 -114
- package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +6 -6
- package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +9 -9
- package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +1 -1
- package/docs-site-docusaurus/docs/api/classes/HashMap.md +52 -48
- package/docs-site-docusaurus/docs/api/classes/Heap.md +119 -64
- package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +84 -14
- package/docs-site-docusaurus/docs/api/classes/LinearBase.md +138 -34
- package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +149 -41
- package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +23 -23
- package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +172 -92
- package/docs-site-docusaurus/docs/api/classes/MapGraph.md +60 -80
- package/docs-site-docusaurus/docs/api/classes/Matrix.md +57 -52
- package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +117 -62
- package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +120 -70
- package/docs-site-docusaurus/docs/api/classes/MinHeap.md +117 -62
- package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +125 -75
- package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +119 -64
- package/docs-site-docusaurus/docs/api/classes/Queue.md +158 -74
- package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +171 -225
- package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +10 -22
- package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +172 -94
- package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +4 -4
- package/docs-site-docusaurus/docs/api/classes/SkipList.md +98 -75
- package/docs-site-docusaurus/docs/api/classes/Stack.md +112 -50
- package/docs-site-docusaurus/docs/api/classes/TreeMap.md +104 -129
- package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +90 -121
- package/docs-site-docusaurus/docs/api/classes/TreeSet.md +298 -107
- package/docs-site-docusaurus/docs/api/classes/Trie.md +116 -58
- package/docs-site-docusaurus/docs/api/classes/TrieNode.md +8 -8
- package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +59 -77
- package/package.json +45 -46
- package/src/common/error.ts +15 -32
- package/src/common/index.ts +0 -3
- package/src/data-structures/base/iterable-element-base.ts +0 -3
- package/src/data-structures/base/linear-base.ts +2 -36
- package/src/data-structures/binary-tree/avl-tree.ts +31 -529
- package/src/data-structures/binary-tree/binary-indexed-tree.ts +47 -572
- package/src/data-structures/binary-tree/binary-tree.ts +326 -1311
- package/src/data-structures/binary-tree/bst.ts +158 -1082
- package/src/data-structures/binary-tree/red-black-tree.ts +451 -1290
- package/src/data-structures/binary-tree/segment-tree.ts +73 -351
- package/src/data-structures/binary-tree/tree-map.ts +462 -5124
- package/src/data-structures/binary-tree/tree-multi-map.ts +302 -4914
- package/src/data-structures/binary-tree/tree-multi-set.ts +299 -3983
- package/src/data-structures/binary-tree/tree-set.ts +338 -4836
- package/src/data-structures/graph/abstract-graph.ts +98 -167
- package/src/data-structures/graph/directed-graph.ts +137 -562
- package/src/data-structures/graph/map-graph.ts +0 -3
- package/src/data-structures/graph/undirected-graph.ts +132 -511
- package/src/data-structures/hash/hash-map.ts +154 -582
- package/src/data-structures/heap/heap.ts +200 -795
- package/src/data-structures/linked-list/doubly-linked-list.ts +121 -865
- package/src/data-structures/linked-list/singly-linked-list.ts +122 -794
- package/src/data-structures/linked-list/skip-linked-list.ts +211 -918
- package/src/data-structures/matrix/matrix.ts +179 -518
- package/src/data-structures/matrix/navigator.ts +0 -1
- package/src/data-structures/priority-queue/max-priority-queue.ts +1 -6
- package/src/data-structures/priority-queue/min-priority-queue.ts +6 -11
- package/src/data-structures/priority-queue/priority-queue.ts +1 -2
- package/src/data-structures/queue/deque.ts +214 -882
- package/src/data-structures/queue/queue.ts +102 -625
- package/src/data-structures/stack/stack.ts +76 -505
- package/src/data-structures/trie/trie.ts +98 -628
- package/src/types/common.ts +0 -10
- package/src/types/data-structures/binary-tree/bst.ts +0 -7
- package/src/types/data-structures/binary-tree/red-black-tree.ts +0 -1
- package/src/types/data-structures/graph/abstract-graph.ts +0 -2
- package/src/types/data-structures/hash/hash-map.ts +0 -3
- package/src/types/data-structures/hash/index.ts +0 -1
- package/src/types/data-structures/matrix/navigator.ts +0 -2
- package/src/types/utils/utils.ts +0 -7
- package/src/types/utils/validate-type.ts +0 -7
- package/src/utils/number.ts +0 -2
- package/src/utils/utils.ts +0 -5
|
@@ -32,6 +32,7 @@ export declare class SegmentTree<E = number> implements Iterable<E> {
|
|
|
32
32
|
protected _tree: E[];
|
|
33
33
|
protected _treeSize: number;
|
|
34
34
|
constructor(elements: E[], options: SegmentTreeOptions<E>);
|
|
35
|
+
get size(): number;
|
|
35
36
|
/**
|
|
36
37
|
* Create a sum segment tree.
|
|
37
38
|
* @example
|
|
@@ -45,60 +46,18 @@ export declare class SegmentTree<E = number> implements Iterable<E> {
|
|
|
45
46
|
static sum(elements: number[]): SegmentTree<number>;
|
|
46
47
|
/**
|
|
47
48
|
* Create a min segment tree.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
* @example
|
|
91
|
-
* // Temperature monitoring with range queries
|
|
92
|
-
* // Hourly temperatures for a day (24 readings)
|
|
93
|
-
* const temps = [18, 17, 16, 15, 16, 18, 21, 24, 27, 29, 31, 32, 33, 32, 31, 29, 27, 25, 23, 21, 20, 19, 18, 17];
|
|
94
|
-
* const tree = SegmentTree.sum(temps);
|
|
95
|
-
*
|
|
96
|
-
* // Average temperature during work hours (9-17)
|
|
97
|
-
* const workSum = tree.query(9, 17);
|
|
98
|
-
* console.log(workSum / 9); // toBeCloseTo;
|
|
99
|
-
*
|
|
100
|
-
* // Sum of morning temps (6-11)
|
|
101
|
-
* console.log(tree.query(6, 11)); // 164;
|
|
49
|
+
* @example
|
|
50
|
+
* // Temperature monitoring with range queries
|
|
51
|
+
* // Hourly temperatures for a day (24 readings)
|
|
52
|
+
* const temps = [18, 17, 16, 15, 16, 18, 21, 24, 27, 29, 31, 32, 33, 32, 31, 29, 27, 25, 23, 21, 20, 19, 18, 17];
|
|
53
|
+
* const tree = SegmentTree.sum(temps);
|
|
54
|
+
*
|
|
55
|
+
* // Average temperature during work hours (9-17)
|
|
56
|
+
* const workSum = tree.query(9, 17);
|
|
57
|
+
* console.log(workSum / 9); // toBeCloseTo;
|
|
58
|
+
*
|
|
59
|
+
* // Sum of morning temps (6-11)
|
|
60
|
+
* console.log(tree.query(6, 11)); // 164;
|
|
102
61
|
*/
|
|
103
62
|
static min(elements: number[]): SegmentTree<number>;
|
|
104
63
|
/**
|
|
@@ -113,176 +72,50 @@ export declare class SegmentTree<E = number> implements Iterable<E> {
|
|
|
113
72
|
/**
|
|
114
73
|
* Point update: set element at index to value.
|
|
115
74
|
* Time: O(log n)
|
|
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
|
-
* @example
|
|
159
|
-
* // Dynamic range sum with updates
|
|
160
|
-
* // Monthly revenue data (in thousands)
|
|
161
|
-
* const revenue = [120, 95, 140, 110, 85, 130, 150, 100, 160, 125, 90, 175];
|
|
162
|
-
* const tree = SegmentTree.sum(revenue);
|
|
163
|
-
*
|
|
164
|
-
* // Q1 revenue (Jan-Mar)
|
|
165
|
-
* console.log(tree.query(0, 2)); // 355;
|
|
166
|
-
*
|
|
167
|
-
* // Update March revenue from 140 to 200
|
|
168
|
-
* tree.update(2, 200);
|
|
169
|
-
*
|
|
170
|
-
* // Q1 revenue after update
|
|
171
|
-
* console.log(tree.query(0, 2)); // 415;
|
|
172
|
-
*
|
|
173
|
-
* // H1 revenue (Jan-Jun)
|
|
174
|
-
* console.log(tree.query(0, 5)); // 740;
|
|
75
|
+
* @example
|
|
76
|
+
* // Dynamic range sum with updates
|
|
77
|
+
* // Monthly revenue data (in thousands)
|
|
78
|
+
* const revenue = [120, 95, 140, 110, 85, 130, 150, 100, 160, 125, 90, 175];
|
|
79
|
+
* const tree = SegmentTree.sum(revenue);
|
|
80
|
+
*
|
|
81
|
+
* // Q1 revenue (Jan-Mar)
|
|
82
|
+
* console.log(tree.query(0, 2)); // 355;
|
|
83
|
+
*
|
|
84
|
+
* // Update March revenue from 140 to 200
|
|
85
|
+
* tree.update(2, 200);
|
|
86
|
+
*
|
|
87
|
+
* // Q1 revenue after update
|
|
88
|
+
* console.log(tree.query(0, 2)); // 415;
|
|
89
|
+
*
|
|
90
|
+
* // H1 revenue (Jan-Jun)
|
|
91
|
+
* console.log(tree.query(0, 5)); // 740;
|
|
175
92
|
*/
|
|
176
93
|
update(index: number, value: E): void;
|
|
177
94
|
/**
|
|
178
95
|
* Range query: returns merger result over [start, end] (inclusive).
|
|
179
96
|
* Time: O(log n)
|
|
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
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
* @example
|
|
223
|
-
* // Range sum query on an array
|
|
224
|
-
* const tree = SegmentTree.sum([1, 3, 5, 7, 9, 11]);
|
|
225
|
-
*
|
|
226
|
-
* // Query sum of range [1, 3] → 3 + 5 + 7 = 15
|
|
227
|
-
* console.log(tree.query(1, 3)); // 15;
|
|
228
|
-
*
|
|
229
|
-
* // Query entire range
|
|
230
|
-
* console.log(tree.query(0, 5)); // 36;
|
|
231
|
-
*
|
|
232
|
-
* // Query single element
|
|
233
|
-
* console.log(tree.query(2, 2)); // 5;
|
|
97
|
+
* @example
|
|
98
|
+
* // Range sum query on an array
|
|
99
|
+
* const tree = SegmentTree.sum([1, 3, 5, 7, 9, 11]);
|
|
100
|
+
*
|
|
101
|
+
* // Query sum of range [1, 3] → 3 + 5 + 7 = 15
|
|
102
|
+
* console.log(tree.query(1, 3)); // 15;
|
|
103
|
+
*
|
|
104
|
+
* // Query entire range
|
|
105
|
+
* console.log(tree.query(0, 5)); // 36;
|
|
106
|
+
*
|
|
107
|
+
* // Query single element
|
|
108
|
+
* console.log(tree.query(2, 2)); // 5;
|
|
234
109
|
*/
|
|
235
110
|
query(start: number, end: number): E;
|
|
236
111
|
/**
|
|
237
112
|
* Get element at index.
|
|
238
113
|
* Time: O(1)
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
* @example
|
|
282
|
-
* // Point access on segment tree
|
|
283
|
-
* const st = SegmentTree.sum([10, 20, 30, 40]);
|
|
284
|
-
* console.log(st.get(0)); // 10;
|
|
285
|
-
* console.log(st.get(2)); // 30;
|
|
114
|
+
* @example
|
|
115
|
+
* // Point access on segment tree
|
|
116
|
+
* const st = SegmentTree.sum([10, 20, 30, 40]);
|
|
117
|
+
* console.log(st.get(0)); // 10;
|
|
118
|
+
* console.log(st.get(2)); // 30;
|
|
286
119
|
*/
|
|
287
120
|
get(index: number): E;
|
|
288
121
|
/**
|
|
@@ -290,56 +123,14 @@ export declare class SegmentTree<E = number> implements Iterable<E> {
|
|
|
290
123
|
* Returns left-1 if predicate(identity) is false.
|
|
291
124
|
* Returns n-1 if predicate holds for the entire range [left, n-1].
|
|
292
125
|
* Time: O(log n)
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
* @example
|
|
336
|
-
* // Find rightmost position where predicate holds
|
|
337
|
-
* // Prefix sums: find the rightmost index where prefix sum < 10
|
|
338
|
-
* const st = SegmentTree.sum([3, 1, 4, 1, 5]);
|
|
339
|
-
* // maxRight(0, sum => sum < 10) — prefix [3,4,8,9,14]
|
|
340
|
-
* // sum < 10 holds through index 3 (prefix=9), fails at 4 (prefix=14)
|
|
341
|
-
* const result = st.maxRight(0, sum => sum < 10);
|
|
342
|
-
* console.log(result); // 3;
|
|
126
|
+
* @example
|
|
127
|
+
* // Find rightmost position where predicate holds
|
|
128
|
+
* // Prefix sums: find the rightmost index where prefix sum < 10
|
|
129
|
+
* const st = SegmentTree.sum([3, 1, 4, 1, 5]);
|
|
130
|
+
* // maxRight(0, sum => sum < 10) — prefix [3,4,8,9,14]
|
|
131
|
+
* // sum < 10 holds through index 3 (prefix=9), fails at 4 (prefix=14)
|
|
132
|
+
* const result = st.maxRight(0, sum => sum < 10);
|
|
133
|
+
* console.log(result); // 3;
|
|
343
134
|
*/
|
|
344
135
|
maxRight(left: number, predicate: (segValue: E) => boolean): number;
|
|
345
136
|
/**
|
|
@@ -347,58 +138,15 @@ export declare class SegmentTree<E = number> implements Iterable<E> {
|
|
|
347
138
|
* Returns right+1 if predicate(identity) is false.
|
|
348
139
|
* Returns 0 if predicate holds for the entire range [0, right].
|
|
349
140
|
* Time: O(log n)
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
* @example
|
|
393
|
-
* // Find leftmost position where predicate holds
|
|
394
|
-
* const st = SegmentTree.sum([3, 1, 4, 1, 5]);
|
|
395
|
-
* // minLeft(5, sum => sum < 7) — suffix sums from right
|
|
396
|
-
* // From right: [5]=5 < 7, [1,5]=6 < 7, [4,1,5]=10 ≥ 7
|
|
397
|
-
* const result = st.minLeft(5, sum => sum < 7);
|
|
398
|
-
* console.log(result); // 3;
|
|
141
|
+
* @example
|
|
142
|
+
* // Find leftmost position where predicate holds
|
|
143
|
+
* const st = SegmentTree.sum([3, 1, 4, 1, 5]);
|
|
144
|
+
* // minLeft(5, sum => sum < 7) — suffix sums from right
|
|
145
|
+
* // From right: [5]=5 < 7, [1,5]=6 < 7, [4,1,5]=10 ≥ 7
|
|
146
|
+
* const result = st.minLeft(5, sum => sum < 7);
|
|
147
|
+
* console.log(result); // 3;
|
|
399
148
|
*/
|
|
400
149
|
minLeft(right: number, predicate: (segValue: E) => boolean): number;
|
|
401
|
-
get size(): number;
|
|
402
150
|
isEmpty(): boolean;
|
|
403
151
|
clone(): SegmentTree<E>;
|
|
404
152
|
toArray(): E[];
|