-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path209.MinimumSizeSubarraySum.py
37 lines (35 loc) · 1.17 KB
/
209.MinimumSizeSubarraySum.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class Solution(object):
def minSubArrayLen(self, target, nums):
'''
固定数组,找一个长度最小的subarray,元素之和大于或等于某target
[2,3,1,2,4,3] 7 -> [4,3] -> len 2
注意是subarray而不是subset
[1,4,4] 4 -> [4] -> len 1
滑动窗口,不觉得像蜗牛吗,固定序列的顺序,找子序列的问题
如果窗口合适,那记录下来,然后继续往前走
'''
i = 0
j = 0
minLen = float("inf")
total = nums[0]
while j < len(nums):
if total >= target:
minLen = min(minLen, j- i + 1)
total -= nums[i]
i += 1
if i > j:
j += 1
if j > len(nums) - 1:
break
total += nums[j]
else:
j += 1
if j > len(nums) - 1:
break
total += nums[j]
if minLen == float("inf"):
minLen = 0
return minLen
s = Solution()
res = s.minSubArrayLen(7, [2,3,1,2,4,3])
print(res)