From ac30179a33a81b8bad7ea2b351cb4f5354ccfd37 Mon Sep 17 00:00:00 2001 From: huangge1199 Date: Mon, 7 Jun 2021 10:43:55 +0800 Subject: [PATCH] =?UTF-8?q?307:=E5=8C=BA=E5=9F=9F=E5=92=8C=E6=A3=80?= =?UTF-8?q?=E7=B4=A2=20-=20=E6=95=B0=E7=BB=84=E5=8F=AF=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../editor/cn/RangeSumQueryMutable.java | 90 +++++++++++++++++++ .../editor/cn/RangeSumQueryMutable.md | 45 ++++++++++ 2 files changed, 135 insertions(+) create mode 100644 src/main/java/leetcode/editor/cn/RangeSumQueryMutable.java create mode 100644 src/main/java/leetcode/editor/cn/RangeSumQueryMutable.md diff --git a/src/main/java/leetcode/editor/cn/RangeSumQueryMutable.java b/src/main/java/leetcode/editor/cn/RangeSumQueryMutable.java new file mode 100644 index 0000000..2b81003 --- /dev/null +++ b/src/main/java/leetcode/editor/cn/RangeSumQueryMutable.java @@ -0,0 +1,90 @@ +//给你一个数组 nums ,请你完成两类查询,其中一类查询要求更新数组下标对应的值,另一类查询要求返回数组中某个范围内元素的总和。 +// +// 实现 NumArray 类: +// +// +// +// +// NumArray(int[] nums) 用整数数组 nums 初始化对象 +// void update(int index, int val) 将 nums[index] 的值更新为 val +// int sumRange(int left, int right) 返回子数组 nums[left, right] 的总和(即,nums[left] + +//nums[left + 1], ..., nums[right]) +// +// +// +// +// 示例: +// +// +//输入: +//["NumArray", "sumRange", "update", "sumRange"] +//[[[1, 3, 5]], [0, 2], [1, 2], [0, 2]] +//输出: +//[null, 9, null, 8] +// +//解释: +//NumArray numArray = new NumArray([1, 3, 5]); +//numArray.sumRange(0, 2); // 返回 9 ,sum([1,3,5]) = 9 +//numArray.update(1, 2); // nums = [1,2,5] +//numArray.sumRange(0, 2); // 返回 8 ,sum([1,2,5]) = 8 +// +// +// +// +// 提示: +// +// +// 1 <= nums.length <= 3 * 104 +// -100 <= nums[i] <= 100 +// 0 <= index < nums.length +// -100 <= val <= 100 +// 0 <= left <= right < nums.length +// 最多调用 3 * 104 次 update 和 sumRange 方法 +// +// +// +// Related Topics 树状数组 线段树 +// 👍 273 👎 0 + +package leetcode.editor.cn; +//307:区域和检索 - 数组可修改 +public class RangeSumQueryMutable{ + public static void main(String[] args) { + //测试代码 +// Solution solution = new RangeSumQueryMutable().new Solution(); + } + //力扣代码 + //leetcode submit region begin(Prohibit modification and deletion) +class NumArray { + + private int[] nums; + + public NumArray(int[] nums) { + this.nums = new int[nums.length]; + for (int i = 0; i < nums.length; i++) { + update(i, nums[i]); + } + } + + public void update(int i, int val) { + this.nums[i] = val; + } + + public int sumRange(int i, int j) { + int sum = 0; + for (; i <= j; i++) { + sum += this.nums[i]; + } + return sum; + } +} + +/** + * Your NumArray object will be instantiated and called as such: + * NumArray obj = new NumArray(nums); + * obj.update(index,val); + * int param_2 = obj.sumRange(left,right); + */ +//leetcode submit region end(Prohibit modification and deletion) + +} \ No newline at end of file diff --git a/src/main/java/leetcode/editor/cn/RangeSumQueryMutable.md b/src/main/java/leetcode/editor/cn/RangeSumQueryMutable.md new file mode 100644 index 0000000..c5f9cbb --- /dev/null +++ b/src/main/java/leetcode/editor/cn/RangeSumQueryMutable.md @@ -0,0 +1,45 @@ +

给你一个数组 nums ,请你完成两类查询,其中一类查询要求更新数组下标对应的值,另一类查询要求返回数组中某个范围内元素的总和。

+ +

实现 NumArray 类:

+ +
+
+
    +
  • NumArray(int[] nums) 用整数数组 nums 初始化对象
  • +
  • void update(int index, int val)nums[index] 的值更新为 val
  • +
  • int sumRange(int left, int right) 返回子数组 nums[left, right] 的总和(即,nums[left] + nums[left + 1], ..., nums[right]
  • +
+ +

 

+ +

示例:

+ +
+输入:
+["NumArray", "sumRange", "update", "sumRange"]
+[[[1, 3, 5]], [0, 2], [1, 2], [0, 2]]
+输出:
+[null, 9, null, 8]
+
+解释:
+NumArray numArray = new NumArray([1, 3, 5]);
+numArray.sumRange(0, 2); // 返回 9 ,sum([1,3,5]) = 9
+numArray.update(1, 2);   // nums = [1,2,5]
+numArray.sumRange(0, 2); // 返回 8 ,sum([1,2,5]) = 8
+
+ +

 

+ +

提示:

+ +
    +
  • 1 <= nums.length <= 3 * 104
  • +
  • -100 <= nums[i] <= 100
  • +
  • 0 <= index < nums.length
  • +
  • -100 <= val <= 100
  • +
  • 0 <= left <= right < nums.length
  • +
  • 最多调用 3 * 104updatesumRange 方法
  • +
+
+
+
Related Topics
  • 树状数组
  • 线段树
  • \n
  • 👍 273
  • 👎 0
  • \ No newline at end of file