博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode Range Sum Query - Mutable
阅读量:5147 次
发布时间:2019-06-13

本文共 1346 字,大约阅读时间需要 4 分钟。

原题链接在这里:

题目:

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) -> 9update(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.

题解:

与相似。更新与求和都很多,利用Binary Indexed Tree.

参考帖子

更新时,更新binary indexed tree的每层parent node. 求和时, 取该点往下所有根节点的和. 更新与求和都能维持O(log n)时间.

Time Complexity: NumArray, O(nlogn). update, O(logn). sumRange, O(logn). n = nums.length.

Space: O(n).

AC Java:

1 public class NumArray { 2     int [] bit; 3     int [] nums; 4      5     public NumArray(int[] nums) { 6         if(nums == null || nums.length == 0){ 7             return; 8         } 9         this.bit = new int[nums.length+1];10         this.nums = new int[nums.length];11         for(int i = 0; i
0){31 sum += this.bit[i];32 i -= (i&-i);33 }34 return sum;35 }36 }37 38 /**39 * Your NumArray object will be instantiated and called as such:40 * NumArray obj = new NumArray(nums);41 * obj.update(i,val);42 * int param_2 = obj.sumRange(i,j);43 */

 跟上.

转载于:https://www.cnblogs.com/Dylan-Java-NYC/p/5139205.html

你可能感兴趣的文章
Linux运维必备工具
查看>>
Ubuntu配置ssh及vnc
查看>>
C语言进阶——const 和 volatile 分析09
查看>>
字符串的查找删除
查看>>
NOI2018垫底记
查看>>
快速切题 poj 1002 487-3279 按规则处理 模拟 难度:0
查看>>
Codeforces Round #277 (Div. 2)
查看>>
一步步学Mybatis-搭建最简单的开发环境-开篇(1)
查看>>
微信小程序图片上传
查看>>
【更新】智能手机批量添加联系人
查看>>
NYOJ-128前缀式计算
查看>>
centos6.7 配置外网端口映射
查看>>
淡定,啊。数据唯一性
查看>>
深入理解 JavaScript 事件循环(一)— event loop
查看>>
Hive(7)-基本查询语句
查看>>
Redis快速入门
查看>>
注意java的对象引用
查看>>
C++ 面向对象 类成员函数this指针
查看>>
inline函数的总结
查看>>
【Jquery】$.Deferred 对象
查看>>