Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
warm_
Fucking Algorithm
提交
5f029526
F
Fucking Algorithm
项目概览
warm_
/
Fucking Algorithm
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
Fucking Algorithm
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
5f029526
编写于
6月 23, 2020
作者:
J
J.J. Liu
提交者:
labuladong
6月 24, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update 滑动窗口技巧.md
上级
18288033
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
40 addition
and
2 deletion
+40
-2
算法思维系列/滑动窗口技巧.md
算法思维系列/滑动窗口技巧.md
+40
-2
未找到文件。
算法思维系列/滑动窗口技巧.md
浏览文件 @
5f029526
...
...
@@ -295,8 +295,47 @@ while (right < s.size()) {
![
公众号 labuladong
](
../pictures/labuladong.png
)
[
Jiajun
](
https://github.com/liujiajun
)
提供最小覆盖子串 Python3 代码:
```
python3
class Solution:
def minWindow(self, s: str, t: str) -> str:
# 最短子串开始位置和长度
start, min_len = 0, float('Inf')
left, right = 0, 0
res = s
# 两个计数器
needs = Counter(t)
window = collections.defaultdict(int)
# defaultdict在访问的key不存在的时候返回默认值0, 可以减少一次逻辑判断
match = 0
while right < len(s):
c1 = s[right]
if needs[c1] > 0:
window[c1] += 1
if window[c1] == needs[c1]:
match += 1
right += 1
while match == len(needs):
if right - left < min_len:
# 更新最小子串长度
min_len = right - left
start = left
c2 = s[left]
if needs[c2] > 0:
window[c2] -= 1
if window[c2] < needs[c2]:
match -= 1
left += 1
return s[start:start+min_len] if min_len != float("Inf") else ""
```
[
上一篇:二分查找解题框架
](
../算法思维系列/二分查找详解.md
)
[
下一篇:双指针技巧解题框架
](
../算法思维系列/双指针技巧.md
)
[
目录
](
../README.md#目录
)
\ No newline at end of file
[
目录
](
../README.md#目录
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录