边工作边刷题:70天一遍leetcode: day 25-1

Minimum Size Subarray Sum

要点:O(n)解的基本方法是sliding window,loop到第i个元素表示的值是结尾在i的元素最长序列。所以进入loop首先加上该元素。然后从左边pop
错误点:左边pop是一个while loop而不是仅pop一个元素:可能有一堆小元素进入window,当前元素很大,所以所有之前的小元素都pop也能满足条件

class Solution(object):
    def minSubArrayLen(self, s, nums):
        """
        :type s: int
        :type nums: List[int]
        :rtype: int
        """
        start = 0
        sum = 0
        minLen = sys.maxint
        for i in range(len(nums)):
            sum+=nums[i]
            while sum>=s:
                if i-start+1<minLen:
                    minLen = i-start+1
                sum-=nums[start]
                start+=1
        if minLen==sys.maxint: minLen=0
        return minLen
posted @ 2016-04-23 10:37  absolute100  阅读(80)  评论(0编辑  收藏  举报