152
153
public getIndexOf(sum: number): PrefixSumIndexOfResult {
155
>
156
>
// Compute all sums (to get a fully valid prefixSum)
157
>
this.getTotalSum();
158
>
159
>
let low = 0;
160
>
let high = this.values.length - 1;
161
>
let mid = 0;
162
>
let midStop = 0;
163
>
let midStart = 0;
164
>
165
>
while (low <= high) {
166
>
mid = low + ((high - low) / 2) | 0;
167
>
168
>
midStop = this.prefixSum[mid];
169
>
midStart = midStop - this.values[mid];
170
>
171
>
if (sum < midStart) {
172
high = mid - 1;
174
low = mid + 1;
176
break;
177
}
179
>
180
>
return new PrefixSumIndexOfResult(mid, sum - midStart);
181
>
}
182
}
183