package com.fishercoder.solutions;

public class _1658 {
    public static class Solution1 {
        /**
         * credit: https://leetcode.com/problems/minimum-operations-to-reduce-x-to-zero/discuss/936074/JavaPython-3-Sliding-window%3A-Longest-subarray-sum-to-the-target-sum(nums)-x.
         */
        public int minOperations(int[] nums, int x) {
            int sum = 0;
            for (int n : nums) {
                sum += n;
            }
            int target = sum - x;
            int len = nums.length;
            int size = Integer.MIN_VALUE;
            for (int left = -1, right = 0, windowSum = 0; right < len; right++) {
                windowSum += nums[right];
                while (left + 1 < len && windowSum > target) {
                    left++;
                    windowSum -= nums[left];
                }
                if (windowSum == target) {
                    size = Math.max(size, right - left);
                }
            }
            return size < 0 ? -1 : len - size;
        }

    }
}