class Solution1(object): def minSubArrayLen(self, target, nums): """ :type target: int :type nums: List[int] :rtype: int """ sub = [] sub.append(0) num_sum = 0 for ind, num in enumerate(nums): sub.append(num_sum + num) num_sum += num print(nums) for length in range(1, len(nums) + 1): print(length) for i in range(0, len(nums) - length + 1): rlt = sub[ i + length ] - sub[i] print(rlt, length, i) if rlt >= target: return length return 0 class Solution: def minSubArrayLen(self, target: int, nums: List[int]) -> int: if sum(nums) < target: return 0 left_idx = 0 s = 0 # sum ans = len(nums) for right_idx, val in enumerate(nums): s += val while s >= target: s -= nums[left_idx] ans = min(ans, right_idx - left_idx + 1) left_idx += 1 return ans print(Solution().minSubArrayLen(7, [2,3,1,2,4,3])) print(Solution().minSubArrayLen(4, [1, 1, 4])) print(Solution().minSubArrayLen(11, [1, 1, 1, 1])) print(Solution().minSubArrayLen(15, [1, 2, 3, 4, 5]))