This commit is contained in:
programmercarl
2022-06-13 17:23:30 +08:00
parent e9cdb3e4c9
commit 2c1aa6ebf8
6 changed files with 31 additions and 6 deletions

View File

@ -417,6 +417,7 @@ object Solution {
} }
sum sum
} }
```
C# C#

View File

@ -5,7 +5,7 @@
<p align="center"><strong><a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p> <p align="center"><strong><a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p>
## 209.长度最小的子数组 # 209.长度最小的子数组
[力扣题目链接](https://leetcode-cn.com/problems/minimum-size-subarray-sum/) [力扣题目链接](https://leetcode-cn.com/problems/minimum-size-subarray-sum/)
@ -17,6 +17,9 @@
输出2 输出2
解释:子数组 [4,3] 是该条件下的长度最小的子数组。 解释:子数组 [4,3] 是该条件下的长度最小的子数组。
# 思路
为了易于大家理解,我特意录制了[拿下滑动窗口! | LeetCode 209 长度最小的子数组](https://www.bilibili.com/video/BV1tZ4y1q7XE)
## 暴力解法 ## 暴力解法
@ -47,8 +50,8 @@ public:
} }
}; };
``` ```
时间复杂度O(n^2) * 时间复杂度O(n^2)
空间复杂度O(1) * 空间复杂度O(1)
## 滑动窗口 ## 滑动窗口
@ -56,6 +59,20 @@ public:
所谓滑动窗口,**就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果**。 所谓滑动窗口,**就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果**。
在暴力解法中是一个for循环滑动窗口的起始位置一个for循环为滑动窗口的终止位置用两个for循环 完成了一个不断搜索区间的过程。
那么滑动窗口如何用一个for循环来完成这个操作呢。
首先要思考 如果用一个for循环那么应该表示 滑动窗口的起始位置,还是终止位置。
如果只用一个for循环来表示 滑动窗口的起始位置,那么如何遍历剩下的终止位置?
此时难免再次陷入 暴力解法的怪圈。
所以 只用一个for循环那么这个循环的索引一定是表示 滑动窗口的终止位置。
那么问题来了, 滑动窗口的起始位置如何移动呢?
这里还是以题目中的示例来举例s=7 数组是 231243来看一下查找的过程 这里还是以题目中的示例来举例s=7 数组是 231243来看一下查找的过程
![209.长度最小的子数组](https://code-thinking.cdn.bcebos.com/gifs/209.%E9%95%BF%E5%BA%A6%E6%9C%80%E5%B0%8F%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.gif) ![209.长度最小的子数组](https://code-thinking.cdn.bcebos.com/gifs/209.%E9%95%BF%E5%BA%A6%E6%9C%80%E5%B0%8F%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.gif)
@ -74,7 +91,7 @@ public:
窗口的起始位置如何移动如果当前窗口的值大于s了窗口就要向前移动了也就是该缩小了 窗口的起始位置如何移动如果当前窗口的值大于s了窗口就要向前移动了也就是该缩小了
窗口的结束位置如何移动:窗口的结束位置就是遍历数组的指针,窗口的起始位置设置为数组的起始位置就可以了 窗口的结束位置如何移动:窗口的结束位置就是遍历数组的指针,也就是for循环里的索引
解题的关键在于 窗口的起始位置如何移动,如图所示: 解题的关键在于 窗口的起始位置如何移动,如图所示:
@ -107,8 +124,8 @@ public:
}; };
``` ```
时间复杂度O(n) * 时间复杂度O(n)
空间复杂度O(1) * 空间复杂度O(1)
**一些录友会疑惑为什么时间复杂度是O(n)** **一些录友会疑惑为什么时间复杂度是O(n)**

View File

@ -356,6 +356,8 @@ object Solution {
} }
} }
```
C#: C#:
```csharp ```csharp

View File

@ -425,6 +425,7 @@ object Solution {
true true
} }
} }
```
C# C#

View File

@ -354,6 +354,7 @@ object Solution {
res res
} }
} }
```
C# C#
```csharp ```csharp

View File

@ -1,6 +1,9 @@
# 一台服务器有什么用! # 一台服务器有什么用!
* [阿里云活动期间服务器购买](https://www.aliyun.com/minisite/goods?taskCode=shareNew2205&recordId=3641992&userCode=roof0wob)
* [腾讯云活动期间服务器购买](https://curl.qcloud.com/EiaMXllu)
但在组织这场活动的时候,了解到大家都有一个共同的问题: **这个服务器究竟有啥用??** 但在组织这场活动的时候,了解到大家都有一个共同的问题: **这个服务器究竟有啥用??**
这真是一个好问题,而且我一句两句还说不清楚,所以就专门发文来讲一讲。 这真是一个好问题,而且我一句两句还说不清楚,所以就专门发文来讲一讲。