LintCode: 和大于S的最小子数组

来源:互联网 发布:做淘宝目前什么好做啊 编辑:程序博客网 时间:2024/06/14 05:11

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
1 0
原创粉丝点击