LintCode: 和大於S的最小子陣列
阿新 • • 發佈:2018-12-27
一前一後兩根指標,噹噹前陣列的和大於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