Skip to content

Commit c96aba3

Browse files
committed
Update index.ts
1 parent ec13fd3 commit c96aba3

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

range-sum-query-mutable/index.ts

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,25 +20,29 @@ export function build(
2020
node: TreeNode,
2121
start: number,
2222
end: number,
23-
nums: number[],
23+
nums: number[]
2424
) {
2525
if (start === end) {
2626
node.val = nums[start];
2727
return;
2828
}
2929
const mid = Math.floor((start + end) / 2);
30+
pushdown(start, end, node);
31+
if (node.left) build(node.left, start, mid, nums);
32+
if (node.right) build(node.right, mid + 1, end, nums);
33+
pushup(node);
34+
}
35+
function pushdown(start: number, end: number, node: TreeNode) {
3036
node.left = new TreeNode();
3137
node.right = new TreeNode();
32-
build(node.left, start, mid, nums);
33-
build(node.right, mid + 1, end, nums);
34-
node.val = node.left.val + node.right.val;
3538
}
39+
3640
export function change(
3741
index: number,
3842
val: number,
3943
node: TreeNode,
4044
start: number,
41-
end: number,
45+
end: number
4246
): void {
4347
if (start === end) {
4448
node.val = val;
@@ -53,14 +57,18 @@ export function change(
5357
} else {
5458
change(index, val, node.right, mid + 1, end);
5559
}
56-
node.val = node.left.val + node.right.val;
60+
pushup(node);
5761
}
62+
function pushup(node: TreeNode) {
63+
node.val = (node.left?.val ?? 0) + (node.right?.val ?? 0);
64+
}
65+
5866
export function query(
5967
left: number,
6068
right: number,
6169
node: TreeNode,
6270
start: number,
63-
end: number,
71+
end: number
6472
): number {
6573
if (start === left && right === end) {
6674
return node.val;

0 commit comments

Comments
 (0)