【优先算法】滑动窗口 --(结合例题讲解解题思路)(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 利用规律,使用"滑动窗口"来解决

相关推荐
yaoxin5211234 小时前
434. Java 日期时间 API - Period 基于日期的时间段
java·开发语言·python
凡人叶枫4 小时前
Effective C++ 条款30:透彻了解 inlining 的里里外外
linux·开发语言·c++·嵌入式开发·effective c++
noipp4 小时前
推荐题目:洛谷 P10907 [蓝桥杯 2024 国 B] 蚂蚁开会
c语言·c++·算法·编程·洛谷
学逆向的5 小时前
C++纯虚函数
开发语言·c++·网络安全
程序员二叉5 小时前
【JUC】ThreadLocal底层原理|内存泄漏|弱引用|跨线程传递方案
java·开发语言·面试·职场和发展·juc
程序员二叉5 小时前
【JUC】线程池全套深度详解|参数|流程|拒绝策略|调优|异常处理
java·开发语言·jvm·算法·面试·juc
青山木5 小时前
Hot 100 --- 轮转数组
java·数据结构·算法
徐小夕6 小时前
Loop Engineering 深度解析与实战指南(全网最全)
前端·算法·github
凡人叶枫6 小时前
Effective C++ 条款22:将成员变量声明为 private
linux·开发语言·c++
Qt程序员6 小时前
掌握 Linux 内核调度:从原理到实现(进程篇)
java·开发语言