1
class Solution {
2
public int shortestSubarray(int[] nums, int k) {
3

4
TreeMap<Long, Integer> maps = new TreeMap<>();
5
long sum = 0l;
6
int min = nums.length + 1;
7

8
maps.put(0l, -1);
9

10
for(int i = 0; i < nums.length; i++) {
11
sum += nums[i];ntry(sum - k) != null)
12
min = Math.min(min, i - maps.floorEntry(sum - k).getValue());
13
while(!maps.isEmpty() && maps.lastEntry().getKey() >= sum)
14
maps.remove(maps.lastEntry().getKey());
15

16
maps.put(sum, i);
17
}
18

19
return min == (nums.length + 1) ? -1 : min;
20
}
21
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0