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表示没有满足条件的子数组 } }