Remove numbers from either end of an array so their sum equals x, using as few removals as possible.
You are given an integer array nums and an integer x.
In one operation, you may remove either the leftmost or the rightmost element from nums and subtract its value from x.
Return the minimum number of operations required to make x exactly 0. If it is not possible, return -1.
A useful way to think about the problem is that the elements you do not remove must form one contiguous subarray in the middle of the array. Your goal is to keep the longest such subarray whose sum is sum(nums) - x.
n, the length of the array.n integers nums[i].x.x to 0, or -1 if impossible.1 <= n <= $10^{5}$1 <= nums[i] <= $10^{4}$1 <= x <= $10^{9}$Example 1
Input
nums = [1,1,4,2,3], x = 5
Output
2
Explanation
Remove 2 and 3 from the right, or remove 1 from the left and 4 from the middle is not allowed because removals must be from the ends. The minimum is 2 operations: remove 2 then 3.
Example 2
Input
nums = [5,6,7,8,9], x = 4
Output
-1
Explanation
All numbers are larger than x, and every operation removes an end element, so x can never become exactly 0.
Example 3
Input
nums = [3,2,20,1,1,3], x = 10
Output
5
Explanation
Keep the subarray [20] with sum 20 = totalSum - x = 30 - 10. That means removing the other 5 elements from the ends.
Premium problem context
Premium adds guided hints, editorial links, similar variants, discussion resources, and concept maps so you can understand why a problem matters, not just solve it once.