😕1658 Minimum Operations to Reduce X to Zero
https://leetcode.com/problems/minimum-operations-to-reduce-x-to-zero/
class Solution {
public int minOperations(int[] nums, int x) {
long total = 0;
int ans = 0;
boolean exist = false;
for (int num : nums) {
total += num;
}
if (total == x) {
return nums.length;
}
int l = 0;
long sum = 0;
for (int r = 0; r < nums.length; r++) {
sum += nums[r];
while (l < r && total - sum < x) {
sum -= nums[l++];
}
if (total - sum == x) {
ans = Math.max(ans, r - l + 1);
// System.out.println(l + " " + r);
exist = true;
}
}
if (!exist) {
return -1;
}
return nums.length - ans;
}
}
挺有意思的一道题,想到用sliding window的话很简单,我一开始往相向双指针上面去想了,但是这道题不适用因为如果要用的话两个指针都可以往两个方向移动,滑动窗口会自动凸显出prefix和suffix也算是很巧妙了
Last updated