1658. Minimum Operations to Reduce X to Zero
Problem Statement
You are given an integer array nums
and an integer x
. In one operation, you can either remove the leftmost or the rightmost element from the array nums
and subtract its value from x
. Note that this modifies the array for future operations.
Return the minimum number of operations to reduce x
to exactly 0
if it is possible, otherwise, return -1
.
Example 1:
Input: nums = [1,1,4,2,3], x = 5
Output: 2
Explanation: The optimal solution is to remove the last two elements to reduce x to zero.
Example 2:
Input: nums = [5,6,7,8,9], x = 4
Output: -1
Example 3:
Input: nums = [3,2,20,1,1,3], x = 10
Output: 5
Explanation: The optimal solution is to remove the last three elements and the first two elements (5 operations in total) to reduce x to zero.
Constraints:
1 <= nums.length <= 105
1 <= nums[i] <= 104
1 <= x <= 109
Intuition
Approach:
We want elements from end
If we take middle window target and subtract, that might give us answer
Eg -> 1 1 4 2 3 X=5
Take total(arrsum)-X = 6
Find 6 using Sliding Window
(1 1 4) 2 3
subtarct window size
Links
Video Links
https://www.youtube.com/watch?v=xumn16n7njs&ab_channel=NeetCodeIO
Approach 1:
class Solution {
public:
int minOperations(vector<int>& nums, int x) {
int n = nums.size();
int sum = accumulate(nums.begin(), nums.end(), 0);
int low=0, high=0, window_sum=0, ans = INT_MAX, target=sum-x;
if(target < 0)
return -1;
while(high<n){
window_sum += nums[high];
while(window_sum > target)
window_sum -= nums[low++];
if(window_sum == target)
ans = min(ans, n-(high-low+1));
high++;
}
return ans == INT_MAX ? -1 : ans;
}
};
Approach 2:
Approach 3:
Approach 4:
Similar Problems
Previous2841. Maximum Sum of Almost Unique SubarrayNext2875. Minimum Size Subarray in Infinite Array
Last updated