1. 程式人生 > >LintCode: 和大於S的最小子陣列

LintCode: 和大於S的最小子陣列

一前一後兩根指標,噹噹前陣列的和大於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