Range Sum Query[with updates]

Range Sum Query[with updates]_第1张图片

这道题比之前的Range Sum Query 难度上升一大截。 我只会brute force的暴力解法T^T..

要update item,同时之前所有的储存解的cache都需要被更改。 这个time 需要太大了。。。



官方答案是: 要调整整个储存number的方式。

把整个array 分割成一个一个size = sqrt(array size)的大小。update的时候update 这个block里的某一个数, 然后get的时候用几个block 合成一下范围。 这样的好处是,数的改变的影响局限在一个block里,不需要update其他的地方。

Range Sum Query[with updates]_第2张图片


Range Sum Query[with updates]_第3张图片

不过面试官估计还是不会满意, 因为这道题的Expectation 应该是 Segment Tree


Range Sum Query[with updates]_第4张图片
Range Sum Query[with updates]_第5张图片

你可能感兴趣的:(Range Sum Query[with updates])