42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
|
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]))
|