zoukankan      html  css  js  c++  java
  • 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);
    }
    };
  • 相关阅读:
    【leetcode】下一个排列
    【leetcode】配对交换
    【leetcode】两个相同字符之间的最长子字符串
    052-126&127
    052-125
    052-124
    052-123
    052-122
    052-121
    052-120
  • 原文地址:https://www.cnblogs.com/daocaorenblog/p/5333808.html
Copyright © 2011-2022 走看看