1class Solution {2public int shortestSubarray(int[] nums, int k) {34TreeMap<Long, Integer> maps = new TreeMap<>();5long sum = 0l;6int min = nums.length + 1;78maps.put(0l, -1);910for(int i = 0; i < nums.length; i++) {11sum += nums[i];ntry(sum - k) != null)12min = Math.min(min, i - maps.floorEntry(sum - k).getValue());13while(!maps.isEmpty() && maps.lastEntry().getKey() >= sum)14maps.remove(maps.lastEntry().getKey());1516maps.put(sum, i);17}1819return min == (nums.length + 1) ? -1 : min;20}21}