LeetCode - 1658. 将 x 减到 0 的最小操作数

LeetCode - 1658. 将 x 减到 0 的最小操作数_第1张图片
LeetCode - 1658. 将 x 减到 0 的最小操作数_第2张图片

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;
    }
}

你可能感兴趣的:(leetcode,leetcode)