mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 16:54:50 +08:00
Update 0209.长度最小的子数组.md
This commit is contained in:
@ -173,18 +173,44 @@ class Solution {
|
|||||||
Python:
|
Python:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
|
(版本一)滑动窗口法
|
||||||
class Solution:
|
class Solution:
|
||||||
def minSubArrayLen(self, s: int, nums: List[int]) -> int:
|
def minSubArrayLen(self, s: int, nums: List[int]) -> int:
|
||||||
res = float("inf") # 定义一个无限大的数
|
l = len(nums)
|
||||||
Sum = 0 # 滑动窗口数值之和
|
left = 0
|
||||||
i = 0 # 滑动窗口起始位置
|
right = 0
|
||||||
for j in range(len(nums)):
|
min_len = float('inf')
|
||||||
Sum += nums[j]
|
cur_sum = 0 #当前的累加值
|
||||||
while Sum >= s:
|
|
||||||
res = min(res, j-i+1)
|
while right < l:
|
||||||
Sum -= nums[i]
|
cur_sum += nums[right]
|
||||||
i += 1
|
|
||||||
return 0 if res == float("inf") else res
|
while cur_sum >= s: # 当前累加值大于目标值
|
||||||
|
min_len = min(min_len, right - left + 1)
|
||||||
|
cur_sum -= nums[left]
|
||||||
|
left += 1
|
||||||
|
|
||||||
|
right += 1
|
||||||
|
|
||||||
|
return min_len if min_len != float('inf') else 0
|
||||||
|
```
|
||||||
|
|
||||||
|
```python
|
||||||
|
(版本二)暴力法
|
||||||
|
class Solution:
|
||||||
|
def minSubArrayLen(self, s: int, nums: List[int]) -> int:
|
||||||
|
l = len(nums)
|
||||||
|
min_len = float('inf')
|
||||||
|
|
||||||
|
for i in range(l):
|
||||||
|
cur_sum = 0
|
||||||
|
for j in range(i, l):
|
||||||
|
cur_sum += nums[j]
|
||||||
|
if cur_sum >= s:
|
||||||
|
min_len = min(min_len, j - i + 1)
|
||||||
|
break
|
||||||
|
|
||||||
|
return min_len if min_len != float('inf') else 0
|
||||||
```
|
```
|
||||||
|
|
||||||
Go:
|
Go:
|
||||||
|
Reference in New Issue
Block a user