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
|
||||
(版本一)滑动窗口法
|
||||
class Solution:
|
||||
def minSubArrayLen(self, s: int, nums: List[int]) -> int:
|
||||
res = float("inf") # 定义一个无限大的数
|
||||
Sum = 0 # 滑动窗口数值之和
|
||||
i = 0 # 滑动窗口起始位置
|
||||
for j in range(len(nums)):
|
||||
Sum += nums[j]
|
||||
while Sum >= s:
|
||||
res = min(res, j-i+1)
|
||||
Sum -= nums[i]
|
||||
i += 1
|
||||
return 0 if res == float("inf") else res
|
||||
l = len(nums)
|
||||
left = 0
|
||||
right = 0
|
||||
min_len = float('inf')
|
||||
cur_sum = 0 #当前的累加值
|
||||
|
||||
while right < l:
|
||||
cur_sum += nums[right]
|
||||
|
||||
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:
|
||||
|
Reference in New Issue
Block a user