1
class Solution {
2
private static int mod = (int) 1e9 + 7;
3

4
public int rangeSum(int[] nums, int n, int left, int right) {
5

6
PriorityQueue<int[]> pq = new PriorityQueue<>((n1, n2) -> n1[1] - n2[1]);
7

8
for (int i = 0; i < n; i++) pq.add(new int[] {i, nums[i]});
9

10
int ans = 0;
11
for (int i = 1; i <= right; i++) {
12
int[] k = pq.remove();
13
if (i >= left) {
14
ans = (ans + k[1]) % mod;
15
}
16
if (k[0] + 1 < n) {
17
pq.add(new int[] {k[0] + 1, k[1] + nums[k[0] + 1]});
18
}
19
}
20
return ans;
21
}
22
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0