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

相关推荐
龙湾开发5 分钟前
计算机图形学编程(使用OpenGL和C++)(第2版)学习笔记 05.纹理贴图
c++·笔记·学习·3d·图形渲染·贴图
flying_131412 分钟前
面试常问系列(一)-神经网络参数初始化-之-softmax
深度学习·神经网络·算法·机器学习·面试
LSL666_34 分钟前
Java——包装类
java·开发语言·包装类
yasuniko35 分钟前
C++线程库
开发语言·c++
@老蝴43 分钟前
C语言—指针2
c语言·开发语言
还有几根头发呀1 小时前
深入理解C/C++内存管理:从基础到高级优化实践
c++
明月看潮生1 小时前
青少年编程与数学 02-019 Rust 编程基础 01课题、环境准备
开发语言·青少年编程·rust·编程与数学
VBA63371 小时前
VBA高级应用30例应用4:利用屏蔽事件来阻止自动运行事件
开发语言
Pop–1 小时前
Vue3 el-tree:全选时只返回父节点,半选只返回勾选中的节点(省-市区-县-镇-乡-村-街道)
开发语言·javascript·vue.js
蒟蒻小袁1 小时前
力扣面试150题-- 翻转二叉树
算法·leetcode·面试