mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-04 07:29:47 +08:00

* chore: Switch to Node 20 + Vitest * chore: migrate to vitest mock functions * chore: code style (switch to prettier) * test: re-enable long-running test Seems the switch to Node 20 and Vitest has vastly improved the code's and / or the test's runtime! see #1193 * chore: code style * chore: fix failing tests * Updated Documentation in README.md * Update contribution guidelines to state usage of Prettier * fix: set prettier printWidth back to 80 * chore: apply updated code style automatically * fix: set prettier line endings to lf again * chore: apply updated code style automatically --------- Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Co-authored-by: Lars Müller <34514239+appgurueu@users.noreply.github.com>
37 lines
742 B
JavaScript
37 lines
742 B
JavaScript
/*
|
|
* Author: Mohit Kumar
|
|
* Fenwick Tree Implementation in JavaScript
|
|
* Fenwick Tree Implementation for finding prefix sum.
|
|
*/
|
|
|
|
class FenwickTree {
|
|
constructor(feneickArray, array, n) {
|
|
for (let i = 1; i <= n; i++) {
|
|
feneickArray[i] = 0
|
|
}
|
|
for (let i = 0; i < n; i++) {
|
|
this.update(feneickArray, n, i, array[i])
|
|
}
|
|
}
|
|
|
|
update(feneickArray, n, index, value) {
|
|
index = index + 1
|
|
while (index <= n) {
|
|
feneickArray[index] += value
|
|
index += index & -index
|
|
}
|
|
}
|
|
|
|
getPrefixSum(feneickArray, index) {
|
|
let currSum = 0
|
|
index = index + 1
|
|
while (index > 0) {
|
|
currSum += feneickArray[index]
|
|
index -= index & -index
|
|
}
|
|
|
|
return currSum
|
|
}
|
|
}
|
|
export { FenwickTree }
|