zoukankan      html  css  js  c++  java
  • 307 Range Sum Query

    Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive.
    The update(i, val) function modifies nums by updating the element at index i to val.
    Example:
    Given nums = [1, 3, 5]
    sumRange(0, 2) -> 9
    update(1, 2)
    sumRange(0, 2) -> 8
    Note:
        The array is only modifiable by the update function.
        You may assume the number of calls to update and sumRange function is distributed evenly.
    详见:https://leetcode.com/problems/range-sum-query-mutable/description/

    C++:

    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;
    };
    
    /**
     * 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);
     */
    

     参考:https://www.cnblogs.com/grandyang/p/4985506.html

  • 相关阅读:
    laravel 5.2 引入第三方类
    jquery获得option的值和对option进行操作
    复习知识点
    前端使用crypto.js进行加密
    使用jQuery Pagination Plugin实现分页效果
    配置文件
    MyBatis的适用场景和生命周期
    使用GET方式提交的表单遇到的问题
    Java复习——网络编程
    SpingData 的学习
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8831128.html
Copyright © 2011-2022 走看看