树状数组-线段树模板题(leetcode-307)
来源:互联网 发布:ti7 知乎 编辑:程序博客网 时间:2024/06/09 20:37
考察点:树状数组,线段树;
树状数组就是声明一个新的数组来表述树状数组,然后根据树的二进制特征进行update和getSum。线段树是根据数组生成一棵树。
下面是经典的树状数组代码:
class NumArray {public: vector<int> tree; vector<int> Nums; int len; NumArray(vector<int> nums) { len = nums.size(); Nums = nums; tree = vector<int>(len+1, 0); for (int i=0; i<len; i++) { init(i, Nums[i]); } } void init(int i, int val) { i++; while (i <= len) { tree[i] += val; i += (i & -i); } } void update(int i, int val) { int temp = val - Nums[i]; Nums[i] = val; init(i, temp); } int getSum(int i) { int sum = 0; i++; while (i > 0) { sum += tree[i]; i -= (i & -i); } return sum; } int sumRange(int i, int j) { return getSum(j) - getSum(i-1); }};/** * Your NumArray object will be instantiated and called as such: * NumArray obj = new NumArray(nums); * obj.update(i,val); * int param_2 = obj.sumRange(i,j); */
阅读全文
0 0
- 树状数组-线段树模板题(leetcode-307)
- 树状数组 线段树 模板
- 线段树+树状数组模板
- 线段树, 树状数组模板
- 线段树模板&&树状数组模板
- 【模板】树状数组 区间修改,区间求和 (模板题:洛谷P3372线段树1)
- tire树,树状数组,线段树模板
- hdoj Stars 1541 (树状数组模板&&线段树)
- hdu 1166 线段树,树状数组模板
- HDU 1166 线段树模板&树状数组模板
- HDU 1166 树状数组&&线段树模板1
- 线段树+差分——【模板】树状数组2
- 线段树,树状数组
- 线段树,树状数组
- 线段树,树状数组
- 线段树,树状数组
- 树状数组-线段树
- 线段树 && 树状数组
- Makefile(一)
- mariadb root忘记密码修改
- 运维日志 数据备份同步的几个方案
- STM32将字符串转化为数字
- 行为型模式之备忘录模式(Memento)
- 树状数组-线段树模板题(leetcode-307)
- GC工作机制详解
- 简单理解Socket
- Mongodb更新数据
- USB驱动程序(二)————USB描述符、URB、管道
- ADO.NET Entity Framework Extensions 简单应用
- linux date
- 找出除一个数只出现一次外其他数都出现两次的数Single Number II
- 自定义键盘