leetcode-307. Range Sum Query - Mutable]()
程序员文章站
2022-07-13 11:03:19
...
- 一、题目大意:
题目简单,给定一个数组,对数组进行更新以及求和
例如:
Given nums = [1, 3, 5]
sumRange(0, 2) -> 9
update(1, 2)
sumRange(0, 2) -> 8
- 二、解题思路:
此题看起来简单,但是考点并非是我们看来的那样,此题考点使用树状数组。
何为数状数组,就是利用 sum 保存部分节点的和,如下图所示
树状数组,关键点在于维护一个sums数组,如图所示C,那么这个数组怎么计算呢?关键点在于lowBit()函数,
int lowBit(int x){
return x&(-x);//返回最高位为1,其他为清0的数据
}
void change(int i, int val) //更新函数
{
int size = nums.size();
while (i <= size)
{
sums[i] += val;
i += lowBit(i);
}
}
int sum(int n) //求和函数
{
int sumRes = 0;
while (n>0)
{
sumRes += sums[n];
n -= lowBit(n);
}
return sumRes;
}
其实,在我的理解,在求和的过程中,sum采用了一种类似于二分的方法,每一次值得更新,都需要去更新上面所有相关的,每一次求和,也需要向下求取所有的和。
上一篇: 【树状数组】LeetCode 307. Range Sum Query - Mutable
下一篇: 数据结构线段树介绍与笔试算法题-LeetCode 307. Range Sum Query - Mutable--Java解法
推荐阅读
-
【leetcode】307. Range Sum Query - Mutable
-
LC.307. Range Sum Query - Mutable
-
leetcode 307. Range Sum Query - Mutable
-
Leetcode-307. 区域和检索 - 数组可修改 Range Sum Query - Mutable (线段树Segment Tree)-超详细Python
-
【树状数组】LeetCode 307. Range Sum Query - Mutable
-
leetcode-307. Range Sum Query - Mutable]()
-
数据结构线段树介绍与笔试算法题-LeetCode 307. Range Sum Query - Mutable--Java解法
-
LeetCode 307. Range Sum Query - Mutable (范围求和查询)
-
LeetCode------Range Sum Query - Mutable
-
LeetCode-307. Range Sum Query - Mutable以及线段树总结