leetcode: Segment Tree:Range Sum Query - Mutable(307)

来源:互联网 发布:红色名录 知乎 编辑:程序博客网 时间:2024/06/05 16:55

https://leetcode.com/problems/range-sum-query-mutable/


class NumArray {public:    NumArray(vector<int> &nums) {        num.resize(nums.size() + 1);        bit.resize(nums.size() + 1);        for (int i = 0; i < nums.size(); ++i) {            update(i, nums[i]);        }    }    void update(int i, int val) {        int diff = val - num[i + 1];        for (int j = i + 1; j < num.size(); j += (j&-j)) {            bit[j] += diff;        }        num[i + 1] = val;    }    int sumRange(int i, int j) {        return getSum(j + 1) - getSum(i);    }        int getSum(int i) {        int res = 0;        for (int j = i; j > 0; j -= (j&-j)) {            res += bit[j];        }        return res;    }private:    vector<int> num;    vector<int> bit;};
0 0
原创粉丝点击