题目
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’s 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
<= $10^5$ - 1 <=
nums[i]
<= $10^4$ - 1 <=
x
<= $10^9$
解析
设sum =, n = nums.size()
. 此时, 原题等价于求最长的subarray使得subarray的各项元素和等于sum - x.
用和这道题一样的滑动窗口思路求解即可.
代码
c++
1 | class Solution { |