思路
记P存放A的累计求和列表(P[x+1] = P[x] + A[x])
找到在满足P[y]-P[x] >= K情况下使y-x最小的y-x
class Solution {
public int shortestSubarray(int[] nums, int k) {
int n=nums.length,res=n+1;
LinkedList<Integer> list=new LinkedList<>();
long[] pre=new long[n+1];
for(int i=1;i<=n;i++)
pre[i]=pre[i-1]+(long)nums[i-1];
for(int i=0;i<n+1;i++)
{
while(!list.isEmpty()&&pre[i]<pre[list.getLast()])
list.removeLast();
while(!list.isEmpty()&&pre[i]-pre[list.getFirst()]>=k)
{
res=Math.min(res,i-list.removeFirst());
}
list.add(i);
}
return res==n+1?-1:res;
}
}