北美程序员面试干货

LeetCode 209 [Minimum Size Subar

2016-08-04  本文已影响55人  Jason_Yuan

原题

给定一个由 n 个整数组成的数组和一个正整数 s ,请找出该数组中满足其和 ≥ s 的最小长度子数组。如果无解,则返回 -1。

样例
给定数组 [2,3,1,2,4,3] 和 s = 7, 子数组 [4,3] 是该条件下的最小长度子数组。

解题思路

完整代码

class Solution(object):
    def minSubArrayLen(self, s, nums):
        """
        :type s: int
        :type nums: List[int]
        :rtype: int
        """
        right, sum = 0, 0
        res = sys.maxint
        for left in range(len(nums)):
            while right < len(nums) and sum < s:
                sum += nums[right]
                right += 1
            if sum >= s:
                res = min(res, right - left)
            sum -= nums[left]    
        if res == sys.maxint:
            return 0
        return res
上一篇 下一篇

猜你喜欢

热点阅读