import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型ArrayList 
     * @param k int整型 
     * @return int整型
     */
    public int shortestSubarray (ArrayList<Integer> nums, int k) {
        // write code here
        int left=0,right=0;//左右指针
        int minLength = Integer.MAX_VALUE;//记录大于等于k的数组的最小长度
        int sum=0;//记录当前子数组元素之和
        for(right=0;right<nums.size();right++){//右指针从0最终移动到数组尾部
            sum+=nums.get(right);
            while(left<=right && sum>=k){//子数组之和大于等于k,左指针就可以右移
                minLength = Math.min(minLength,right-left+1);
                sum-=nums.get(left++);

            }
        }
        return minLength==Integer.MAX_VALUE?-1:minLength;//-1表示没有满足条件的子数组

    }
}