class Solution {
public:
int minOperations(vector<int>& nums, int x) {
int sum = 0;
for(auto e : nums)
sum += e;
if(sum < x) //如果sum值小于x,那么一定找不到最小操作数
return -1;
sum -= x; //得到需要求的区间值
int ret = 0;
int n = nums.size();
int len = INT_MAX;
for(int right = 0, left = 0; right < n; right++)
{
ret += nums[right]; //统计区间的每个值
while(ret > sum) //如果大于sum,就进入判断
ret -= nums[left++]; //减去当前left的值,继续遍历
if(ret == sum) //如果等于就比较长度
len = min(len, n - (right - left + 1));
}
return len == INT_MAX ? -1 : len;
}
};