
									 Problem
								
								
									 Solution
								
								
									 Submissions
								
								
							Range Sum using Segment Tree
								Certification: Advanced Level
								Accuracy: 100%
								Submissions: 1
								Points: 15
							
							Given an integer array "nums" and two integers "lower" and "upper", return the number of range sums that lie in "[lower, upper]" inclusive.
A range sum "S(i, j)" is defined as the sum of the elements in "nums" between indices "I" and "j" inclusive: "nums[i] + nums[i+1] + ... + nums[j]".
Example 1
- Input: nums = [-2, 5, -1], lower = -2, upper = 2
 - Output: 3
 - Explanation: 
We need to count the number of range sums that lie in [-2, 2].
The range sums are: S(0, 0) = -2, which is in the range [-2, 2];
S(0, 1) = -2 + 5 = 3, which is NOT in the range [-2, 2];
S(0, 2) = -2 + 5 + (-1) = 2, which is in the range [-2, 2];
S(1, 1) = 5, which is NOT in the range [-2, 2];
S(1, 2) = 5 + (-1) = 4, which is NOT in the range [-2, 2]; S(2, 2) = -1, which is in the range [-2, 2].
There are 3 range sums that lie in [-2, 2]. 
Example 2
- Input: nums = [0, -3, 2, -3, 4], lower = 3, upper = 5
 - Output: 2
 - Explanation: 
We need to count the number of range sums that lie in [3, 5].
The range sums that lie in [3, 5] are: S(2, 4) = 2 + (-3) + 4 = 3, and S(4, 4) = 4.
There are 2 range sums that lie in [3, 5]. 
Constraints
- 1 <= nums.length <= 10^4
 - -2^31 <= nums[i] <= 2^31 - 1
 - -10^5 <= lower <= upper <= 10^5
 - The sum of elements in any range [i, j] will not exceed 2^31 - 1
 - Time Complexity: O(n log n), where n is the length of the array
 - Space Complexity: O(n)
 
Editorial
									
												
My Submissions
										All Solutions
									| Lang | Status | Date | Code | 
|---|---|---|---|
| You do not have any submissions for this problem. | |||
| User | Lang | Status | Date | Code | 
|---|---|---|---|---|
| No submissions found. | ||||
Solution Hints
- Calculate the prefix sums of the array to make range sum queries faster
 - Use a segment tree to efficiently query and update range sums
 - For each prefix sum, count how many previous prefix sums fall within the range [prefixSum - upper, prefixSum - lower]
 - The difference between two prefix sums gives the sum of elements between those indices
 - We need to handle potential overflow due to large integers