From 7eb382660bdeb6a4e80a6b208ef02f707e78e224 Mon Sep 17 00:00:00 2001 From: Jimit Dholakia <25223469+jimit105@users.noreply.github.com> Date: Fri, 20 Dec 2024 07:16:45 +0000 Subject: [PATCH] Sync LeetCode submission Runtime - 3 ms (76.10%), Memory - 21.6 MB (6.28%) --- 0303-range-sum-query---immutable/README.md | 39 ++++++++++++++++++++ 0303-range-sum-query---immutable/solution.py | 20 ++++++++++ 2 files changed, 59 insertions(+) create mode 100644 0303-range-sum-query---immutable/README.md create mode 100644 0303-range-sum-query---immutable/solution.py diff --git a/0303-range-sum-query---immutable/README.md b/0303-range-sum-query---immutable/README.md new file mode 100644 index 0000000..083bf97 --- /dev/null +++ b/0303-range-sum-query---immutable/README.md @@ -0,0 +1,39 @@ +

Given an integer array nums, handle multiple queries of the following type:

+ +
    +
  1. Calculate the sum of the elements of nums between indices left and right inclusive where left <= right.
  2. +
+ +

Implement the NumArray class:

+ + + +

 

+

Example 1:

+ +
+Input
+["NumArray", "sumRange", "sumRange", "sumRange"]
+[[[-2, 0, 3, -5, 2, -1]], [0, 2], [2, 5], [0, 5]]
+Output
+[null, 1, -1, -3]
+
+Explanation
+NumArray numArray = new NumArray([-2, 0, 3, -5, 2, -1]);
+numArray.sumRange(0, 2); // return (-2) + 0 + 3 = 1
+numArray.sumRange(2, 5); // return 3 + (-5) + 2 + (-1) = -1
+numArray.sumRange(0, 5); // return (-2) + 0 + 3 + (-5) + 2 + (-1) = -3
+
+ +

 

+

Constraints:

+ + diff --git a/0303-range-sum-query---immutable/solution.py b/0303-range-sum-query---immutable/solution.py new file mode 100644 index 0000000..18d5e10 --- /dev/null +++ b/0303-range-sum-query---immutable/solution.py @@ -0,0 +1,20 @@ +# Approach 3: Prefix Sum + +# Time: O(1) +# Space: O(n) + +class NumArray: + + def __init__(self, nums: List[int]): + self.prefix_sum = [0] * (len(nums) + 1) + for i in range(len(nums)): + self.prefix_sum[i + 1] = self.prefix_sum[i] + nums[i] + + def sumRange(self, left: int, right: int) -> int: + return self.prefix_sum[right + 1] - self.prefix_sum[left] + + + +# Your NumArray object will be instantiated and called as such: +# obj = NumArray(nums) +# param_1 = obj.sumRange(left,right)