一前一后两根指针,当当前数组的和大于s时,移动前面的指针直到和小于s为止,比较当前数组长度与ans的大小。
class Solution:
# @param nums: a list of integers
# @param s: an integer
# @return: an integer representing the minimum size of subarray
def minimumSize(self, nums, s):
# write your code here
i, j= 0, 0
n = len(nums)
tmp_sum = 0
ans = n + 1
while j < n:
tmp_sum += nums[j]
if tmp_sum >= s:
while tmp_sum >= s and j >= i:
ans = min(ans, j - i + 1)
tmp_sum -= nums[i]
i += 1
j += 1
return ans if ans <= n else -1