【优先算法】滑动窗口 --(结合例题讲解解题思路)(C++)

目录

​编辑

1.什么是滑动窗口?

[2. 滑动窗口例题](#2. 滑动窗口例题)

[2.1 例题1:长度最小的子数组](#2.1 例题1:长度最小的子数组)

[2.1.1 解题思路](#2.1.1 解题思路)

[2.1.2 方法一:暴力枚举出所有的子数组的和](#2.1.2 方法一:暴力枚举出所有的子数组的和)

[2.1.3 方法二:使用 "同向双指针" 也就是滑动窗口来进行优化](#2.1.3 方法二:使用 “同向双指针” 也就是滑动窗口来进行优化)

[2.2 例题2:无重复字符的最长子串](#2.2 例题2:无重复字符的最长子串)

[2.2.1 方法一:暴力枚举+哈希表(判断字符是否重复出现)](#2.2.1 方法一:暴力枚举+哈希表(判断字符是否重复出现))

[2.2.2 利用规律,使用"滑动窗口"来解决](#2.2.2 利用规律,使用“滑动窗口”来解决)


1.什么是滑动窗口?

滑动窗口是两个指针,向着一个方向,不会退,像一个窗口般的移动。

2. 滑动窗口例题

2.1 例题1:长度最小的子数组

力扣-长度最小的子数组https://leetcode.cn/problems/minimum-size-subarray-sum/description/

2.1.1 解题思路

2.1.2 方法一:暴力枚举出所有的子数组的和

这种时间复杂度太高,为O(n^2),解法太lou。有逼格的解法请看解法二

2.1.3 方法二:使用 "同向双指针" 也就是滑动窗口来进行优化

2.2 例题2:无重复字符的最长子串

力扣-无重复字串的最长子串https://leetcode.cn/problems/longest-substring-without-repeating-characters/description/

2.2.1 方法一:暴力枚举+哈希表(判断字符是否重复出现)

时间复杂度为O(N^2),同样这个方法我们不讲解,没有任何学习价值,最佳解法请看解法二。

2.2.2 利用规律,使用"滑动窗口"来解决

相关推荐
牛奔6 小时前
Go 如何打印调试深层或嵌套的结构体
开发语言·后端·golang
m沐沐6 小时前
【深度学习】YOLOv2目标检测算法——改进点、网络结构与聚类先验框解析
人工智能·pytorch·深度学习·算法·yolo·目标检测·transformer
不会就选b6 小时前
算法日常・每日刷题--<链表>3
数据结构·算法·链表
geovindu6 小时前
go: Iterative Algorithms
开发语言·后端·算法·golang·迭代算法
学逆向的6 小时前
汇编——JCC指令
开发语言·汇编·网络安全
mayaairi7 小时前
JS循环语句深度解析:嵌套for、while与do...while
开发语言·前端·javascript
kite01218 小时前
Go语言Map深度解析与最佳实践
开发语言·后端·golang
Zachery Pole8 小时前
CCF-CSP备战NO.7【队列】
算法
闪电悠米8 小时前
力扣hot100-48.旋转图像-转置翻转详解
算法·leetcode·职场和发展
满天星83035779 小时前
【算法】最长递增子序列(三种解法)
算法