【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

相关文章

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

C++中RAII资源获取即初始化

《C++中RAII资源获取即初始化》RAII通过构造/析构自动管理资源生命周期,确保安全释放,本文就来介绍一下C++中的RAII技术及其应用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、核心原理与机制二、标准库中的RAII实现三、自定义RAII类设计原则四、常见应用场景1. 内存管理2. 文件操

C++中零拷贝的多种实现方式

《C++中零拷贝的多种实现方式》本文主要介绍了C++中零拷贝的实现示例,旨在在减少数据在内存中的不必要复制,从而提高程序性能、降低内存使用并减少CPU消耗,零拷贝技术通过多种方式实现,下面就来了解一下... 目录一、C++中零拷贝技术的核心概念二、std::string_view 简介三、std::stri

C++高效内存池实现减少动态分配开销的解决方案

《C++高效内存池实现减少动态分配开销的解决方案》C++动态内存分配存在系统调用开销、碎片化和锁竞争等性能问题,内存池通过预分配、分块管理和缓存复用解决这些问题,下面就来了解一下... 目录一、C++内存分配的性能挑战二、内存池技术的核心原理三、主流内存池实现:TCMalloc与Jemalloc1. TCM

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务

C++作用域和标识符查找规则详解

《C++作用域和标识符查找规则详解》在C++中,作用域(Scope)和标识符查找(IdentifierLookup)是理解代码行为的重要概念,本文将详细介绍这些规则,并通过实例来说明它们的工作原理,需... 目录作用域标识符查找规则1. 普通查找(Ordinary Lookup)2. 限定查找(Qualif

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示

C++/类与对象/默认成员函数@构造函数的用法

《C++/类与对象/默认成员函数@构造函数的用法》:本文主要介绍C++/类与对象/默认成员函数@构造函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录名词概念默认成员函数构造函数概念函数特征显示构造函数隐式构造函数总结名词概念默认构造函数:不用传参就可以

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一