class Solution {
public int minOperations(int[] nums, int x) {
int n = nums.length;//共有多少个数
int sum =0;//nums中数的总和
for(int i = 0;i < n;i++){//计算nums中数的总和
sum += nums[i];
}
//寻找一个最大滑动窗口 使得滑动窗口中的和为sum-x
int val = sum - x;
if(sum < x)
return -1;
int left = 0;
int total = 0;
int len = Integer.MIN_VALUE;
for(int right =0;right < n;right++){
total += nums[right];
while(total > val){
total -= nums[left];
left += 1;
}
if(total == val){
len = Math.max(len,right-left+1);
}
}
return len == Integer.MIN_VALUE?-1:n-len;
}
}