leetcode-307. Range Sum Query
来源:互联网 发布:淘宝个性主题 编辑:程序博客网 时间:2024/06/03 20:11
- 一、题目大意:
题目简单,给定一个数组,对数组进行更新以及求和
例如:
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采用了一种类似于二分的方法,每一次值得更新,都需要去更新上面所有相关的,每一次求和,也需要向下求取所有的和。
阅读全文
0 0
- leetcode-307. Range Sum Query
- [Leetcode] 307. Range Sum Query
- leetcode 307. Range Sum Query
- leetcode 307. Range Sum Query
- leetcode 307. Range Sum Query
- leetcode 307. Range Sum Query
- [Leetcode]Range Sum Query
- Range Sum Query(leetcode)
- [LeetCode]Range Sum Query
- leetcode---Range Sum Query
- LeetCode : Range Sum Query
- [LeetCode] Range Sum Query
- leetCode---Range Sum Query
- leetcode[Range Sum Query
- LeetCode -- Range Sum Query
- leetcode 307. Range Sum Query - Mutable
- LeetCode 307. Range Sum Query - Mutable
- Leetcode 307. Range Sum Query - Mutable (Python)
- 数据库函数用法
- java基本数据类型,String、Integer等类型,Class三种对象引用的箭头,即箭头是怎么指的?
- vue快速入门
- 面试题16反转链表
- C#枚举类型、枚举类型与其他类型转换、结构类型、数组类型
- leetcode-307. Range Sum Query
- IEqualityComparer<T>接口
- CentOS系统通过yum升级内核
- hdu 1040 As Easy As A+B
- maven 打包时,src/main/java目录下的xml等资源文件没有打包进去的问题
- JS中常用的输入输出方法
- xmpp整理笔记:聊天信息的发送与显示
- OpenCV的基本矩阵操作与示例
- 条款 35