博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode "Range Sum Query - Mutable"
阅读量:4875 次
发布时间:2019-06-11

本文共 872 字,大约阅读时间需要 2 分钟。

Fenwick tree can do this job.

class NumArray {    vector
in; vector
ft; int query(int i) { i += 1; i = min(i, int(ft.size() - 1)); int s = 0; for (; i > 0; i -= (i & -i)) s += ft[i]; return s; } void init(int i, int v) { i += 1; for (; i < ft.size(); i += (i & -i)) ft[i] += v; }public: NumArray(vector
&nums) { in = nums; int n = nums.size(); ft.assign(n + 1, 0); for(int i = 0; i < n; i ++) init(i, nums[i]); } void update(int i, int v) { int d = v - in[i]; in[i] = v; i += 1; for (; i < ft.size(); i += (i & -i)) ft[i] += d; } int sumRange(int i, int j) { return query(j) - (i ? query(i - 1) : 0); }};

转载于:https://www.cnblogs.com/tonix/p/4976464.html

你可能感兴趣的文章
XML到底是什么
查看>>
35 个 Java 代码性能优化总结
查看>>
mac平台安装配置TomCat
查看>>
组播原理
查看>>
tomcat安装
查看>>
关于互斥锁和条件变量
查看>>
HDU1846(巴什博奕)
查看>>
改变checkbox和radio的默认样式
查看>>
微机原理之 80x86微处理器
查看>>
如何创建基本的高级队列之二:创建接收方代码
查看>>
堆表的在执行Select语句时的默认排序问题——发现问题
查看>>
oracle监听理解 命名理解
查看>>
Python3基础1
查看>>
C#高性能二进制序列化
查看>>
JS常用函数
查看>>
Python学习教程:Python3除法之真除法、截断除法和下取整对比
查看>>
CSS杂集(标准流&多行垂直居中)
查看>>
Javascript中数组与字典(即map)的使用
查看>>
php 正则匹配中文(转)
查看>>
C++不完整的类型
查看>>