mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 00:43:04 +08:00
Update
This commit is contained in:
@ -417,6 +417,7 @@ object Solution {
|
|||||||
}
|
}
|
||||||
sum
|
sum
|
||||||
}
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
C#:
|
C#:
|
||||||
|
@ -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, 数组是 2,3,1,2,4,3,来看一下查找的过程:
|
这里还是以题目中的示例来举例,s=7, 数组是 2,3,1,2,4,3,来看一下查找的过程:
|
||||||
|
|
||||||

|

|
||||||
@ -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)**。
|
||||||
|
|
||||||
|
@ -356,6 +356,8 @@ object Solution {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
C#:
|
C#:
|
||||||
```csharp
|
```csharp
|
||||||
|
@ -425,6 +425,7 @@ object Solution {
|
|||||||
true
|
true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
C#:
|
C#:
|
||||||
|
@ -354,6 +354,7 @@ object Solution {
|
|||||||
res
|
res
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
```
|
||||||
|
|
||||||
C#:
|
C#:
|
||||||
```csharp
|
```csharp
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
|
|
||||||
# 一台服务器有什么用!
|
# 一台服务器有什么用!
|
||||||
|
|
||||||
|
* [阿里云活动期间服务器购买](https://www.aliyun.com/minisite/goods?taskCode=shareNew2205&recordId=3641992&userCode=roof0wob)
|
||||||
|
* [腾讯云活动期间服务器购买](https://curl.qcloud.com/EiaMXllu)
|
||||||
|
|
||||||
但在组织这场活动的时候,了解到大家都有一个共同的问题: **这个服务器究竟有啥用??**
|
但在组织这场活动的时候,了解到大家都有一个共同的问题: **这个服务器究竟有啥用??**
|
||||||
|
|
||||||
这真是一个好问题,而且我一句两句还说不清楚,所以就专门发文来讲一讲。
|
这真是一个好问题,而且我一句两句还说不清楚,所以就专门发文来讲一讲。
|
||||||
|
Reference in New Issue
Block a user