Range Sum Query

用到线段树,不懂,先标记着吧!

[LeetCode]Range Sum Query - Mutable - 最美的时光 - 博客频道 - CSDN.NET
http://blog.csdn.net/xyt8023y/article/details/49946789

x&(-x) Lowbit(x) - sftxlin的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/sftxlin/article/details/6751190

class NumArray {
private:
vector<int> c;
vector<int> m_nums;
public:
NumArray(vector<int> &nums) {
    c.resize(nums.size()+1);
    m_nums = nums;
    for(int i = 0; i < nums.size(); i++){
        add(i+1,nums[i]);
    }
}

int lowbit(int pos){
    return pos&(-pos);
}
void add(int pos, int value){
    while(pos < c.size()){
        c[pos] += value;
        pos += lowbit(pos);
    }
}
int sum(int pos){
    int res = 0;
    while(pos > 0){
        res += c[pos];
        pos -= lowbit(pos);
    }
    return res;
}

void update(int i, int val) {
    int ori = m_nums[i];
    int delta = val - ori;
    m_nums[i] = val;
    add(i+1,delta);
}

int sumRange(int i, int j) {
    return sum(j+1) - sum(i);
}
};
原文地址:https://www.cnblogs.com/daocaorenblog/p/5333808.html