【C++速刷精品】滑动窗口

2023-12-19 03:36
文章标签 c++ 窗口 滑动 精品 速刷

本文主要是介绍【C++速刷精品】滑动窗口,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【C++速刷精品】滑动窗口

  • 一、长度最小的子数组
    • 1、题目链接
    • 2、题目解析
    • 3、代码
  • 二、无重复字符的最长字串
    • 1、题目链接
    • 2、题目解析
    • 3、代码
  • 三、最大连续1的个数III
    • 1、题目链接
    • 2、题目解析
    • 3、代码
  • 四、将x减到0的最小操作数
    • 1、题目链接
    • 2、题目解析
    • 3、代码
  • 五、水果成篮
    • 1、题目链接
    • 2、题目解析
    • 3、代码
  • 六、找到字符串中所有字母异位词
    • 1、题目链接
    • 2、题目解析
    • 3、代码
  • 七、串联所有单词的字串
    • 1、题目链接
    • 2、题目解析
    • 3、代码
  • 八、最小覆盖字串
    • 1、题目链接
    • 2、题目解析
    • 3、代码


一、长度最小的子数组

1、题目链接

leetcode链接

在这里插入图片描述

2、题目解析

讲解一下什么是滑动窗口?
滑动窗口就是一个同向双指针利用单调性的两个指针区间为窗口,right指针往右移动则是入窗口,left指针往右移动则是出窗口,我们用的步骤如下图:
在这里插入图片描述
在这里插入图片描述

3、代码

在这里插入图片描述

二、无重复字符的最长字串

1、题目链接

leetcode链接
在这里插入图片描述

2、题目解析

构造一个hash函数表,将right和left从0开始,不断的将right的值存入到hash表中,如果发现表中存入了两个了,那么就更新left的值,并进行更新ret。

在这里插入图片描述

3、代码

在这里插入图片描述

三、最大连续1的个数III

1、题目链接

题目链接

在这里插入图片描述

2、题目解析

此时定义一个ret用来记录走过的0的个数,right走过一个0就加加,left走过一个0就减减,我们循环的条件在于:当right指针遇见1的时候,一直往右走直到遇见0,每遇见一个0就将ret进行加加,直到ret的个数比k大的时候就需要出窗口了,也就是我们的left指针往右移动,直到找到0,每遇见一个0就将ret减减再left往右走一步,这个判断跳出条件在于ret<k,而在每次进行这个操作的时候,我们都进行算一下下标,也就是中间有多少个元素,最终等right到最后一个位置的下一个位置的时候,我们就结束。

在这里插入图片描述

3、代码

在这里插入图片描述

四、将x减到0的最小操作数

1、题目链接

leetcode链接

在这里插入图片描述

2、题目解析

在这里插入图片描述

在这里插入图片描述

3、代码

在这里插入图片描述

五、水果成篮

1、题目链接

leetcode链接

在这里插入图片描述

2、题目解析

在这里插入图片描述

3、代码

在这里插入图片描述

六、找到字符串中所有字母异位词

1、题目链接

leetcode链接
在这里插入图片描述

2、题目解析

在这里插入图片描述

3、代码

在这里插入图片描述

七、串联所有单词的字串

1、题目链接

leetcode传送门

在这里插入图片描述

2、题目解析

在这里插入图片描述
在这里插入图片描述

3、代码

在这里插入图片描述

八、最小覆盖字串

1、题目链接

leetcode链接

在这里插入图片描述

2、题目解析

在这里插入图片描述

在这里插入图片描述

3、代码

NO1.利用unordered_map容器来进行解决,但算法复杂度太高
在这里插入图片描述

No2.用hash数组进行解决,算法复杂度低
在这里插入图片描述


这篇关于【C++速刷精品】滑动窗口的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/510764

相关文章

PostgreSQL中rank()窗口函数实用指南与示例

《PostgreSQL中rank()窗口函数实用指南与示例》在数据分析和数据库管理中,经常需要对数据进行排名操作,PostgreSQL提供了强大的窗口函数rank(),可以方便地对结果集中的行进行排名... 目录一、rank()函数简介二、基础示例:部门内员工薪资排名示例数据排名查询三、高级应用示例1. 每

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被

C++中NULL与nullptr的区别小结

《C++中NULL与nullptr的区别小结》本文介绍了C++编程中NULL与nullptr的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编... 目录C++98空值——NULLC++11空值——nullptr区别对比示例 C++98空值——NUL

C++ Log4cpp跨平台日志库的使用小结

《C++Log4cpp跨平台日志库的使用小结》Log4cpp是c++类库,本文详细介绍了C++日志库log4cpp的使用方法,及设置日志输出格式和优先级,具有一定的参考价值,感兴趣的可以了解一下... 目录一、介绍1. log4cpp的日志方式2.设置日志输出的格式3. 设置日志的输出优先级二、Window

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

C++11委托构造函数和继承构造函数的实现

《C++11委托构造函数和继承构造函数的实现》C++引入了委托构造函数和继承构造函数这两个重要的特性,本文主要介绍了C++11委托构造函数和继承构造函数的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录引言一、委托构造函数1.1 委托构造函数的定义与作用1.2 委托构造函数的语法1.3 委托构造函