zoukankan      html  css  js  c++  java
  • Binary Indexed Tree-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:

    1. The array is only modifiable by the update function.
    2. You may assume the number of calls to update and sumRange function is distributed evenly.


     
     
     
    class NumArray
     2 {
     3 public:
     4     NumArray(vector<int> &nums) 
     5     {
     6         sums.push_back(0);
     7         for (int i = 0; i < nums.size(); i++)
     8         {
     9             sums.push_back(sums[i] + nums[i]);
    10             values.push_back(nums[i]);
    11         }
    12     }
    13 
    14     void update(int i, int val) 
    15     {
    16         int diff = val - values[i];
    17         for (int k = i + 1; k < sums.size(); k++)
    18             sums[k] = sums[k] + diff;
    19         values[i] = val;
    20     }
    21 
    22     int sumRange(int i, int j) 
    23     {
    24         return sums[j + 1] - sums[i];
    25     }
    26 private:
    27     vector<int> sums;
    28     vector<int> values;
    29 };
  • 相关阅读:
    Unix Shell常用命令
    传输信号
    硬盘 光驱 跳线问题
    常见病毒类型
    Unix操作系统文件结构
    数字模拟信号 单双信道传输
    双绞线
    Unix操作系统目录存放内容
    EasyRecovery数据恢复工具
    什么叫做泛解析
  • 原文地址:https://www.cnblogs.com/msymm/p/8278251.html
Copyright © 2011-2022 走看看